Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (46 commits)
  tcp: MD5: Fix IPv6 signatures
  skbuff: add missing kernel-doc for do_not_encrypt
  net/ipv4/route.c: fix build error
  tcp: MD5: Fix MD5 signatures on certain ACK packets
  ipv6: Fix ip6_xmit to send fragments if ipfragok is true
  ipvs: Move userspace definitions to include/linux/ip_vs.h
  netdev: Fix lockdep warnings in multiqueue configurations.
  netfilter: xt_hashlimit: fix race between htable_destroy and htable_gc
  netfilter: ipt_recent: fix race between recent_mt_destroy and proc manipulations
  netfilter: nf_conntrack_tcp: decrease timeouts while data in unacknowledged
  irda: replace __FUNCTION__ with __func__
  nsc-ircc: default to dongle type 9 on IBM hardware
  bluetooth: add quirks for a few hci_usb devices
  hysdn: remove the packed attribute from PofTimStamp_tag
  isdn: use the common ascii hex helpers
  tg3: adapt tg3 to use reworked PCI PM code
  atm: fix direct casts of pointers to u32 in the InterPhase driver
  atm: fix const assignment/discard warnings in the ATM networking driver
  net: use the common ascii hex helpers
  random32: seeding improvement
  ...
This commit is contained in:
Linus Torvalds 2008-08-01 11:35:16 -07:00
commit 9a5467fd60
73 changed files with 2008 additions and 1292 deletions

View file

@ -18,6 +18,7 @@
#include <linux/timer.h> #include <linux/timer.h>
#include <linux/ata_platform.h> #include <linux/ata_platform.h>
#include <linux/mv643xx_eth.h> #include <linux/mv643xx_eth.h>
#include <linux/ethtool.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach/pci.h> #include <asm/mach/pci.h>
@ -69,6 +70,8 @@ static struct platform_device rd88f6281_nand_flash = {
static struct mv643xx_eth_platform_data rd88f6281_ge00_data = { static struct mv643xx_eth_platform_data rd88f6281_ge00_data = {
.phy_addr = -1, .phy_addr = -1,
.speed = SPEED_1000,
.duplex = DUPLEX_FULL,
}; };
static struct mv_sata_platform_data rd88f6281_sata_data = { static struct mv_sata_platform_data rd88f6281_sata_data = {

View file

@ -15,6 +15,7 @@
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/mtd/physmap.h> #include <linux/mtd/physmap.h>
#include <linux/mv643xx_eth.h> #include <linux/mv643xx_eth.h>
#include <linux/ethtool.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/gpio.h> #include <asm/gpio.h>
#include <asm/leds.h> #include <asm/leds.h>
@ -88,6 +89,8 @@ static struct orion5x_mpp_mode rd88f5181l_fxo_mpp_modes[] __initdata = {
static struct mv643xx_eth_platform_data rd88f5181l_fxo_eth_data = { static struct mv643xx_eth_platform_data rd88f5181l_fxo_eth_data = {
.phy_addr = -1, .phy_addr = -1,
.speed = SPEED_1000,
.duplex = DUPLEX_FULL,
}; };
static void __init rd88f5181l_fxo_init(void) static void __init rd88f5181l_fxo_init(void)

View file

@ -15,6 +15,7 @@
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/mtd/physmap.h> #include <linux/mtd/physmap.h>
#include <linux/mv643xx_eth.h> #include <linux/mv643xx_eth.h>
#include <linux/ethtool.h>
#include <linux/i2c.h> #include <linux/i2c.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/gpio.h> #include <asm/gpio.h>
@ -89,6 +90,8 @@ static struct orion5x_mpp_mode rd88f5181l_ge_mpp_modes[] __initdata = {
static struct mv643xx_eth_platform_data rd88f5181l_ge_eth_data = { static struct mv643xx_eth_platform_data rd88f5181l_ge_eth_data = {
.phy_addr = -1, .phy_addr = -1,
.speed = SPEED_1000,
.duplex = DUPLEX_FULL,
}; };
static struct i2c_board_info __initdata rd88f5181l_ge_i2c_rtc = { static struct i2c_board_info __initdata rd88f5181l_ge_i2c_rtc = {

View file

@ -14,6 +14,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/mtd/physmap.h> #include <linux/mtd/physmap.h>
#include <linux/mv643xx_eth.h> #include <linux/mv643xx_eth.h>
#include <linux/ethtool.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/gpio.h> #include <asm/gpio.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
@ -92,6 +93,8 @@ static struct platform_device wnr854t_nor_flash = {
static struct mv643xx_eth_platform_data wnr854t_eth_data = { static struct mv643xx_eth_platform_data wnr854t_eth_data = {
.phy_addr = -1, .phy_addr = -1,
.speed = SPEED_1000,
.duplex = DUPLEX_FULL,
}; };
static void __init wnr854t_init(void) static void __init wnr854t_init(void)

View file

@ -14,6 +14,7 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/mtd/physmap.h> #include <linux/mtd/physmap.h>
#include <linux/mv643xx_eth.h> #include <linux/mv643xx_eth.h>
#include <linux/ethtool.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/gpio.h> #include <asm/gpio.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
@ -100,6 +101,8 @@ static struct platform_device wrt350n_v2_nor_flash = {
static struct mv643xx_eth_platform_data wrt350n_v2_eth_data = { static struct mv643xx_eth_platform_data wrt350n_v2_eth_data = {
.phy_addr = -1, .phy_addr = -1,
.speed = SPEED_1000,
.duplex = DUPLEX_FULL,
}; };
static void __init wrt350n_v2_init(void) static void __init wrt350n_v2_init(void)

View file

@ -156,8 +156,8 @@ static void ia_hack_tcq(IADEV *dev) {
} }
iavcc_r->vc_desc_cnt--; iavcc_r->vc_desc_cnt--;
dev->desc_tbl[desc1 -1].timestamp = 0; dev->desc_tbl[desc1 -1].timestamp = 0;
IF_EVENT(printk("ia_hack: return_q skb = 0x%x desc = %d\n", IF_EVENT(printk("ia_hack: return_q skb = 0x%p desc = %d\n",
(u32)dev->desc_tbl[desc1 -1].txskb, desc1);) dev->desc_tbl[desc1 -1].txskb, desc1);)
if (iavcc_r->pcr < dev->rate_limit) { if (iavcc_r->pcr < dev->rate_limit) {
IA_SKB_STATE (dev->desc_tbl[desc1-1].txskb) |= IA_TX_DONE; IA_SKB_STATE (dev->desc_tbl[desc1-1].txskb) |= IA_TX_DONE;
if (ia_enque_rtn_q(&dev->tx_return_q, dev->desc_tbl[desc1 -1]) < 0) if (ia_enque_rtn_q(&dev->tx_return_q, dev->desc_tbl[desc1 -1]) < 0)
@ -527,8 +527,8 @@ static int ia_cbr_setup (IADEV *dev, struct atm_vcc *vcc) {
inc = 0; inc = 0;
testSlot = idealSlot; testSlot = idealSlot;
TstSchedTbl = (u16*)(SchedTbl+testSlot); //set index and read in value TstSchedTbl = (u16*)(SchedTbl+testSlot); //set index and read in value
IF_CBR(printk("CBR Testslot 0x%x AT Location 0x%x, NumToAssign=%d\n", IF_CBR(printk("CBR Testslot 0x%x AT Location 0x%p, NumToAssign=%d\n",
testSlot, (u32)TstSchedTbl,toBeAssigned);) testSlot, TstSchedTbl,toBeAssigned);)
memcpy((caddr_t)&cbrVC,(caddr_t)TstSchedTbl,sizeof(cbrVC)); memcpy((caddr_t)&cbrVC,(caddr_t)TstSchedTbl,sizeof(cbrVC));
while (cbrVC) // If another VC at this location, we have to keep looking while (cbrVC) // If another VC at this location, we have to keep looking
{ {
@ -536,8 +536,8 @@ static int ia_cbr_setup (IADEV *dev, struct atm_vcc *vcc) {
testSlot = idealSlot - inc; testSlot = idealSlot - inc;
if (testSlot < 0) { // Wrap if necessary if (testSlot < 0) { // Wrap if necessary
testSlot += dev->CbrTotEntries; testSlot += dev->CbrTotEntries;
IF_CBR(printk("Testslot Wrap. STable Start=0x%x,Testslot=%d\n", IF_CBR(printk("Testslot Wrap. STable Start=0x%p,Testslot=%d\n",
(u32)SchedTbl,testSlot);) SchedTbl,testSlot);)
} }
TstSchedTbl = (u16 *)(SchedTbl + testSlot); // set table index TstSchedTbl = (u16 *)(SchedTbl + testSlot); // set table index
memcpy((caddr_t)&cbrVC,(caddr_t)TstSchedTbl,sizeof(cbrVC)); memcpy((caddr_t)&cbrVC,(caddr_t)TstSchedTbl,sizeof(cbrVC));
@ -552,8 +552,8 @@ static int ia_cbr_setup (IADEV *dev, struct atm_vcc *vcc) {
} }
// set table index and read in value // set table index and read in value
TstSchedTbl = (u16*)(SchedTbl + testSlot); TstSchedTbl = (u16*)(SchedTbl + testSlot);
IF_CBR(printk("Reading CBR Tbl from 0x%x, CbrVal=0x%x Iteration %d\n", IF_CBR(printk("Reading CBR Tbl from 0x%p, CbrVal=0x%x Iteration %d\n",
(u32)TstSchedTbl,cbrVC,inc);) TstSchedTbl,cbrVC,inc);)
memcpy((caddr_t)&cbrVC,(caddr_t)TstSchedTbl,sizeof(cbrVC)); memcpy((caddr_t)&cbrVC,(caddr_t)TstSchedTbl,sizeof(cbrVC));
} /* while */ } /* while */
// Move this VCI number into this location of the CBR Sched table. // Move this VCI number into this location of the CBR Sched table.
@ -1427,11 +1427,11 @@ static int rx_init(struct atm_dev *dev)
/* We know this is 32bit bus addressed so the following is safe */ /* We know this is 32bit bus addressed so the following is safe */
writel(iadev->rx_dle_dma & 0xfffff000, writel(iadev->rx_dle_dma & 0xfffff000,
iadev->dma + IPHASE5575_RX_LIST_ADDR); iadev->dma + IPHASE5575_RX_LIST_ADDR);
IF_INIT(printk("Tx Dle list addr: 0x%08x value: 0x%0x\n", IF_INIT(printk("Tx Dle list addr: 0x%p value: 0x%0x\n",
(u32)(iadev->dma+IPHASE5575_TX_LIST_ADDR), iadev->dma+IPHASE5575_TX_LIST_ADDR,
*(u32*)(iadev->dma+IPHASE5575_TX_LIST_ADDR)); *(u32*)(iadev->dma+IPHASE5575_TX_LIST_ADDR));
printk("Rx Dle list addr: 0x%08x value: 0x%0x\n", printk("Rx Dle list addr: 0x%p value: 0x%0x\n",
(u32)(iadev->dma+IPHASE5575_RX_LIST_ADDR), iadev->dma+IPHASE5575_RX_LIST_ADDR,
*(u32*)(iadev->dma+IPHASE5575_RX_LIST_ADDR));) *(u32*)(iadev->dma+IPHASE5575_RX_LIST_ADDR));)
writew(0xffff, iadev->reass_reg+REASS_MASK_REG); writew(0xffff, iadev->reass_reg+REASS_MASK_REG);
@ -1470,7 +1470,7 @@ static int rx_init(struct atm_dev *dev)
buf_desc_ptr++; buf_desc_ptr++;
rx_pkt_start += iadev->rx_buf_sz; rx_pkt_start += iadev->rx_buf_sz;
} }
IF_INIT(printk("Rx Buffer desc ptr: 0x%0x\n", (u32)(buf_desc_ptr));) IF_INIT(printk("Rx Buffer desc ptr: 0x%p\n", buf_desc_ptr);)
i = FREE_BUF_DESC_Q*iadev->memSize; i = FREE_BUF_DESC_Q*iadev->memSize;
writew(i >> 16, iadev->reass_reg+REASS_QUEUE_BASE); writew(i >> 16, iadev->reass_reg+REASS_QUEUE_BASE);
writew(i, iadev->reass_reg+FREEQ_ST_ADR); writew(i, iadev->reass_reg+FREEQ_ST_ADR);
@ -1487,7 +1487,7 @@ static int rx_init(struct atm_dev *dev)
*freeq_start = (u_short)i; *freeq_start = (u_short)i;
freeq_start++; freeq_start++;
} }
IF_INIT(printk("freeq_start: 0x%0x\n", (u32)freeq_start);) IF_INIT(printk("freeq_start: 0x%p\n", freeq_start);)
/* Packet Complete Queue */ /* Packet Complete Queue */
i = (PKT_COMP_Q * iadev->memSize) & 0xffff; i = (PKT_COMP_Q * iadev->memSize) & 0xffff;
writew(i, iadev->reass_reg+PCQ_ST_ADR); writew(i, iadev->reass_reg+PCQ_ST_ADR);
@ -1713,7 +1713,7 @@ static void tx_dle_intr(struct atm_dev *dev)
IA_SKB_STATE(skb) |= IA_DLED; IA_SKB_STATE(skb) |= IA_DLED;
skb_queue_tail(&iavcc->txing_skb, skb); skb_queue_tail(&iavcc->txing_skb, skb);
} }
IF_EVENT(printk("tx_dle_intr: enque skb = 0x%x \n", (u32)skb);) IF_EVENT(printk("tx_dle_intr: enque skb = 0x%p \n", skb);)
if (++dle == iadev->tx_dle_q.end) if (++dle == iadev->tx_dle_q.end)
dle = iadev->tx_dle_q.start; dle = iadev->tx_dle_q.start;
} }
@ -2044,8 +2044,8 @@ static int tx_init(struct atm_dev *dev)
writew(tmp16, iadev->seg_reg+CBR_TAB_END+1); // CBR_PTR; writew(tmp16, iadev->seg_reg+CBR_TAB_END+1); // CBR_PTR;
tmp16 = (CBR_SCHED_TABLE*iadev->memSize + iadev->num_vc*6 - 2) >> 1; tmp16 = (CBR_SCHED_TABLE*iadev->memSize + iadev->num_vc*6 - 2) >> 1;
writew(tmp16, iadev->seg_reg+CBR_TAB_END); writew(tmp16, iadev->seg_reg+CBR_TAB_END);
IF_INIT(printk("iadev->seg_reg = 0x%x CBR_PTR_BASE = 0x%x\n", IF_INIT(printk("iadev->seg_reg = 0x%p CBR_PTR_BASE = 0x%x\n",
(u32)iadev->seg_reg, readw(iadev->seg_reg+CBR_PTR_BASE));) iadev->seg_reg, readw(iadev->seg_reg+CBR_PTR_BASE));)
IF_INIT(printk("CBR_TAB_BEG = 0x%x, CBR_TAB_END = 0x%x, CBR_PTR = 0x%x\n", IF_INIT(printk("CBR_TAB_BEG = 0x%x, CBR_TAB_END = 0x%x, CBR_PTR = 0x%x\n",
readw(iadev->seg_reg+CBR_TAB_BEG), readw(iadev->seg_reg+CBR_TAB_END), readw(iadev->seg_reg+CBR_TAB_BEG), readw(iadev->seg_reg+CBR_TAB_END),
readw(iadev->seg_reg+CBR_TAB_END+1));) readw(iadev->seg_reg+CBR_TAB_END+1));)
@ -2963,8 +2963,8 @@ static int ia_pkt_tx (struct atm_vcc *vcc, struct sk_buff *skb) {
/* Put the packet in a tx buffer */ /* Put the packet in a tx buffer */
trailer = iadev->tx_buf[desc-1].cpcs; trailer = iadev->tx_buf[desc-1].cpcs;
IF_TX(printk("Sent: skb = 0x%x skb->data: 0x%x len: %d, desc: %d\n", IF_TX(printk("Sent: skb = 0x%p skb->data: 0x%p len: %d, desc: %d\n",
(u32)skb, (u32)skb->data, skb->len, desc);) skb, skb->data, skb->len, desc);)
trailer->control = 0; trailer->control = 0;
/*big endian*/ /*big endian*/
trailer->length = ((skb->len & 0xff) << 8) | ((skb->len & 0xff00) >> 8); trailer->length = ((skb->len & 0xff) << 8) | ((skb->len & 0xff00) >> 8);
@ -3181,7 +3181,7 @@ static int __devinit ia_init_one(struct pci_dev *pdev,
} }
dev->dev_data = iadev; dev->dev_data = iadev;
IF_INIT(printk(DEV_LABEL "registered at (itf :%d)\n", dev->number);) IF_INIT(printk(DEV_LABEL "registered at (itf :%d)\n", dev->number);)
IF_INIT(printk("dev_id = 0x%x iadev->LineRate = %d \n", (u32)dev, IF_INIT(printk("dev_id = 0x%p iadev->LineRate = %d \n", dev,
iadev->LineRate);) iadev->LineRate);)
pci_set_drvdata(pdev, dev); pci_set_drvdata(pdev, dev);

View file

@ -134,6 +134,13 @@ static struct usb_device_id blacklist_ids[] = {
/* Dell laptop with Broadcom chip */ /* Dell laptop with Broadcom chip */
{ USB_DEVICE(0x413c, 0x8126), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU }, { USB_DEVICE(0x413c, 0x8126), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
/* Dell Wireless 370 */
{ USB_DEVICE(0x413c, 0x8156), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
/* Dell Wireless 410 */
{ USB_DEVICE(0x413c, 0x8152), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
/* Broadcom 2046 */
{ USB_DEVICE(0x0a5c, 0x2151), .driver_info = HCI_RESET },
/* Microsoft Wireless Transceiver for Bluetooth 2.0 */ /* Microsoft Wireless Transceiver for Bluetooth 2.0 */
{ USB_DEVICE(0x045e, 0x009c), .driver_info = HCI_RESET }, { USB_DEVICE(0x045e, 0x009c), .driver_info = HCI_RESET },

View file

@ -247,7 +247,6 @@ static inline void dump_bytes(enum debuglevel level, const char *tag,
#ifdef CONFIG_GIGASET_DEBUG #ifdef CONFIG_GIGASET_DEBUG
unsigned char c; unsigned char c;
static char dbgline[3 * 32 + 1]; static char dbgline[3 * 32 + 1];
static const char hexdigit[] = "0123456789abcdef";
int i = 0; int i = 0;
while (count-- > 0) { while (count-- > 0) {
if (i > sizeof(dbgline) - 4) { if (i > sizeof(dbgline) - 4) {
@ -258,8 +257,8 @@ static inline void dump_bytes(enum debuglevel level, const char *tag,
c = *bytes++; c = *bytes++;
dbgline[i] = (i && !(i % 12)) ? '-' : ' '; dbgline[i] = (i && !(i % 12)) ? '-' : ' ';
i++; i++;
dbgline[i++] = hexdigit[(c >> 4) & 0x0f]; dbgline[i++] = hex_asc_hi(c);
dbgline[i++] = hexdigit[c & 0x0f]; dbgline[i++] = hex_asc_lo(c);
} }
dbgline[i] = '\0'; dbgline[i] = '\0';
gig_dbg(level, "%s:%s", tag, dbgline); gig_dbg(level, "%s:%s", tag, dbgline);

View file

@ -60,7 +60,7 @@ typedef struct PofRecHdr_tag { /* Pof record header */
typedef struct PofTimeStamp_tag { typedef struct PofTimeStamp_tag {
/*00 */ unsigned long UnixTime __attribute__((packed)); /*00 */ unsigned long UnixTime __attribute__((packed));
/*04 */ unsigned char DateTimeText[0x28] __attribute__((packed)); /*04 */ unsigned char DateTimeText[0x28];
/* =40 */ /* =40 */
/*2C */ /*2C */
} tPofTimeStamp; } tPofTimeStamp;

View file

@ -510,14 +510,14 @@ config STNIC
config SH_ETH config SH_ETH
tristate "Renesas SuperH Ethernet support" tristate "Renesas SuperH Ethernet support"
depends on SUPERH && \ depends on SUPERH && \
(CPU_SUBTYPE_SH7710 || CPU_SUBTYPE_SH7712) (CPU_SUBTYPE_SH7710 || CPU_SUBTYPE_SH7712 || CPU_SUBTYPE_SH7763)
select CRC32 select CRC32
select MII select MII
select MDIO_BITBANG select MDIO_BITBANG
select PHYLIB select PHYLIB
help help
Renesas SuperH Ethernet device driver. Renesas SuperH Ethernet device driver.
This driver support SH7710 and SH7712. This driver support SH7710, SH7712 and SH7763.
config SUNLANCE config SUNLANCE
tristate "Sun LANCE support" tristate "Sun LANCE support"

View file

@ -605,36 +605,87 @@ adjust_head:
static int bfin_mac_hard_start_xmit(struct sk_buff *skb, static int bfin_mac_hard_start_xmit(struct sk_buff *skb,
struct net_device *dev) struct net_device *dev)
{ {
unsigned int data; u16 *data;
current_tx_ptr->skb = skb; current_tx_ptr->skb = skb;
/* if (ANOMALY_05000285) {
* Is skb->data always 16-bit aligned? /*
* Do we need to memcpy((char *)(tail->packet + 2), skb->data, len)? * TXDWA feature is not avaible to older revision < 0.3 silicon
*/ * of BF537
if ((((unsigned int)(skb->data)) & 0x02) == 2) { *
/* move skb->data to current_tx_ptr payload */ * Only if data buffer is ODD WORD alignment, we do not
data = (unsigned int)(skb->data) - 2; * need to memcpy
*((unsigned short *)data) = (unsigned short)(skb->len); */
current_tx_ptr->desc_a.start_addr = (unsigned long)data; u32 data_align = (u32)(skb->data) & 0x3;
/* this is important! */ if (data_align == 0x2) {
blackfin_dcache_flush_range(data, (data + (skb->len)) + 2); /* move skb->data to current_tx_ptr payload */
data = (u16 *)(skb->data) - 1;
*data = (u16)(skb->len);
current_tx_ptr->desc_a.start_addr = (u32)data;
/* this is important! */
blackfin_dcache_flush_range((u32)data,
(u32)((u8 *)data + skb->len + 4));
} else {
*((u16 *)(current_tx_ptr->packet)) = (u16)(skb->len);
memcpy((u8 *)(current_tx_ptr->packet + 2), skb->data,
skb->len);
current_tx_ptr->desc_a.start_addr =
(u32)current_tx_ptr->packet;
if (current_tx_ptr->status.status_word != 0)
current_tx_ptr->status.status_word = 0;
blackfin_dcache_flush_range(
(u32)current_tx_ptr->packet,
(u32)(current_tx_ptr->packet + skb->len + 2));
}
} else { } else {
*((unsigned short *)(current_tx_ptr->packet)) = /*
(unsigned short)(skb->len); * TXDWA feature is avaible to revision < 0.3 silicon of
memcpy((char *)(current_tx_ptr->packet + 2), skb->data, * BF537 and always avaible to BF52x
(skb->len)); */
current_tx_ptr->desc_a.start_addr = u32 data_align = (u32)(skb->data) & 0x3;
(unsigned long)current_tx_ptr->packet; if (data_align == 0x0) {
if (current_tx_ptr->status.status_word != 0) u16 sysctl = bfin_read_EMAC_SYSCTL();
current_tx_ptr->status.status_word = 0; sysctl |= TXDWA;
blackfin_dcache_flush_range((unsigned int)current_tx_ptr-> bfin_write_EMAC_SYSCTL(sysctl);
packet,
(unsigned int)(current_tx_ptr-> /* move skb->data to current_tx_ptr payload */
packet + skb->len) + data = (u16 *)(skb->data) - 2;
2); *data = (u16)(skb->len);
current_tx_ptr->desc_a.start_addr = (u32)data;
/* this is important! */
blackfin_dcache_flush_range(
(u32)data,
(u32)((u8 *)data + skb->len + 4));
} else if (data_align == 0x2) {
u16 sysctl = bfin_read_EMAC_SYSCTL();
sysctl &= ~TXDWA;
bfin_write_EMAC_SYSCTL(sysctl);
/* move skb->data to current_tx_ptr payload */
data = (u16 *)(skb->data) - 1;
*data = (u16)(skb->len);
current_tx_ptr->desc_a.start_addr = (u32)data;
/* this is important! */
blackfin_dcache_flush_range(
(u32)data,
(u32)((u8 *)data + skb->len + 4));
} else {
u16 sysctl = bfin_read_EMAC_SYSCTL();
sysctl &= ~TXDWA;
bfin_write_EMAC_SYSCTL(sysctl);
*((u16 *)(current_tx_ptr->packet)) = (u16)(skb->len);
memcpy((u8 *)(current_tx_ptr->packet + 2), skb->data,
skb->len);
current_tx_ptr->desc_a.start_addr =
(u32)current_tx_ptr->packet;
if (current_tx_ptr->status.status_word != 0)
current_tx_ptr->status.status_word = 0;
blackfin_dcache_flush_range(
(u32)current_tx_ptr->packet,
(u32)(current_tx_ptr->packet + skb->len + 2));
}
} }
/* enable this packet's dma */ /* enable this packet's dma */
@ -691,7 +742,6 @@ static void bfin_mac_rx(struct net_device *dev)
(unsigned long)skb->tail); (unsigned long)skb->tail);
dev->last_rx = jiffies; dev->last_rx = jiffies;
skb->dev = dev;
skb->protocol = eth_type_trans(skb, dev); skb->protocol = eth_type_trans(skb, dev);
#if defined(BFIN_MAC_CSUM_OFFLOAD) #if defined(BFIN_MAC_CSUM_OFFLOAD)
skb->csum = current_rx_ptr->status.ip_payload_csum; skb->csum = current_rx_ptr->status.ip_payload_csum;
@ -920,6 +970,7 @@ static int bfin_mac_open(struct net_device *dev)
phy_start(lp->phydev); phy_start(lp->phydev);
phy_write(lp->phydev, MII_BMCR, BMCR_RESET); phy_write(lp->phydev, MII_BMCR, BMCR_RESET);
setup_system_regs(dev); setup_system_regs(dev);
setup_mac_addr(dev->dev_addr);
bfin_mac_disable(); bfin_mac_disable();
bfin_mac_enable(); bfin_mac_enable();
pr_debug("hardware init finished\n"); pr_debug("hardware init finished\n");
@ -955,7 +1006,7 @@ static int bfin_mac_close(struct net_device *dev)
return 0; return 0;
} }
static int __init bfin_mac_probe(struct platform_device *pdev) static int __devinit bfin_mac_probe(struct platform_device *pdev)
{ {
struct net_device *ndev; struct net_device *ndev;
struct bfin_mac_local *lp; struct bfin_mac_local *lp;
@ -1081,7 +1132,7 @@ out_err_probe_mac:
return rc; return rc;
} }
static int bfin_mac_remove(struct platform_device *pdev) static int __devexit bfin_mac_remove(struct platform_device *pdev)
{ {
struct net_device *ndev = platform_get_drvdata(pdev); struct net_device *ndev = platform_get_drvdata(pdev);
struct bfin_mac_local *lp = netdev_priv(ndev); struct bfin_mac_local *lp = netdev_priv(ndev);
@ -1128,7 +1179,7 @@ static int bfin_mac_resume(struct platform_device *pdev)
static struct platform_driver bfin_mac_driver = { static struct platform_driver bfin_mac_driver = {
.probe = bfin_mac_probe, .probe = bfin_mac_probe,
.remove = bfin_mac_remove, .remove = __devexit_p(bfin_mac_remove),
.resume = bfin_mac_resume, .resume = bfin_mac_resume,
.suspend = bfin_mac_suspend, .suspend = bfin_mac_suspend,
.driver = { .driver = {

View file

@ -683,7 +683,7 @@ enum {
SF_ERASE_SECTOR = 0xd8, /* erase sector */ SF_ERASE_SECTOR = 0xd8, /* erase sector */
FW_FLASH_BOOT_ADDR = 0x70000, /* start address of FW in flash */ FW_FLASH_BOOT_ADDR = 0x70000, /* start address of FW in flash */
FW_VERS_ADDR = 0x77ffc, /* flash address holding FW version */ FW_VERS_ADDR = 0x7fffc, /* flash address holding FW version */
FW_MIN_SIZE = 8 /* at least version and csum */ FW_MIN_SIZE = 8 /* at least version and csum */
}; };

View file

@ -2937,9 +2937,9 @@ static void ehea_rereg_mrs(struct work_struct *work)
} }
} }
} }
mutex_unlock(&dlpar_mem_lock); ehea_info("re-initializing driver complete");
ehea_info("re-initializing driver complete");
out: out:
mutex_unlock(&dlpar_mem_lock);
return; return;
} }

View file

@ -1547,8 +1547,10 @@ static int __devinit enc28j60_probe(struct spi_device *spi)
random_ether_addr(dev->dev_addr); random_ether_addr(dev->dev_addr);
enc28j60_set_hw_macaddr(dev); enc28j60_set_hw_macaddr(dev);
ret = request_irq(spi->irq, enc28j60_irq, IRQF_TRIGGER_FALLING, /* Board setup must set the relevant edge trigger type;
DRV_NAME, priv); * level triggers won't currently work.
*/
ret = request_irq(spi->irq, enc28j60_irq, 0, DRV_NAME, priv);
if (ret < 0) { if (ret < 0) {
if (netif_msg_probe(priv)) if (netif_msg_probe(priv))
dev_err(&spi->dev, DRV_NAME ": request irq %d failed " dev_err(&spi->dev, DRV_NAME ": request irq %d failed "

View file

@ -333,6 +333,7 @@ enum {
NvRegPowerState2 = 0x600, NvRegPowerState2 = 0x600,
#define NVREG_POWERSTATE2_POWERUP_MASK 0x0F11 #define NVREG_POWERSTATE2_POWERUP_MASK 0x0F11
#define NVREG_POWERSTATE2_POWERUP_REV_A3 0x0001 #define NVREG_POWERSTATE2_POWERUP_REV_A3 0x0001
#define NVREG_POWERSTATE2_PHY_RESET 0x0004
}; };
/* Big endian: should work, but is untested */ /* Big endian: should work, but is untested */
@ -529,6 +530,7 @@ union ring_type {
#define PHY_REALTEK_INIT_REG4 0x14 #define PHY_REALTEK_INIT_REG4 0x14
#define PHY_REALTEK_INIT_REG5 0x18 #define PHY_REALTEK_INIT_REG5 0x18
#define PHY_REALTEK_INIT_REG6 0x11 #define PHY_REALTEK_INIT_REG6 0x11
#define PHY_REALTEK_INIT_REG7 0x01
#define PHY_REALTEK_INIT1 0x0000 #define PHY_REALTEK_INIT1 0x0000
#define PHY_REALTEK_INIT2 0x8e00 #define PHY_REALTEK_INIT2 0x8e00
#define PHY_REALTEK_INIT3 0x0001 #define PHY_REALTEK_INIT3 0x0001
@ -537,6 +539,9 @@ union ring_type {
#define PHY_REALTEK_INIT6 0xf5c7 #define PHY_REALTEK_INIT6 0xf5c7
#define PHY_REALTEK_INIT7 0x1000 #define PHY_REALTEK_INIT7 0x1000
#define PHY_REALTEK_INIT8 0x0003 #define PHY_REALTEK_INIT8 0x0003
#define PHY_REALTEK_INIT9 0x0008
#define PHY_REALTEK_INIT10 0x0005
#define PHY_REALTEK_INIT11 0x0200
#define PHY_REALTEK_INIT_MSK1 0x0003 #define PHY_REALTEK_INIT_MSK1 0x0003
#define PHY_GIGABIT 0x0100 #define PHY_GIGABIT 0x0100
@ -1149,6 +1154,42 @@ static int phy_init(struct net_device *dev)
return PHY_ERROR; return PHY_ERROR;
} }
} }
if (np->phy_model == PHY_MODEL_REALTEK_8211 &&
np->phy_rev == PHY_REV_REALTEK_8211C) {
u32 powerstate = readl(base + NvRegPowerState2);
/* need to perform hw phy reset */
powerstate |= NVREG_POWERSTATE2_PHY_RESET;
writel(powerstate, base + NvRegPowerState2);
msleep(25);
powerstate &= ~NVREG_POWERSTATE2_PHY_RESET;
writel(powerstate, base + NvRegPowerState2);
msleep(25);
reg = mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG6, MII_READ);
reg |= PHY_REALTEK_INIT9;
if (mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG6, reg)) {
printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
return PHY_ERROR;
}
if (mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG1, PHY_REALTEK_INIT10)) {
printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
return PHY_ERROR;
}
reg = mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG7, MII_READ);
if (!(reg & PHY_REALTEK_INIT11)) {
reg |= PHY_REALTEK_INIT11;
if (mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG7, reg)) {
printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
return PHY_ERROR;
}
}
if (mii_rw(dev, np->phyaddr, PHY_REALTEK_INIT_REG1, PHY_REALTEK_INIT1)) {
printk(KERN_INFO "%s: phy init failed.\n", pci_name(np->pci_dev));
return PHY_ERROR;
}
}
if (np->phy_model == PHY_MODEL_REALTEK_8201) { if (np->phy_model == PHY_MODEL_REALTEK_8201) {
if (np->device_id == PCI_DEVICE_ID_NVIDIA_NVENET_32 || if (np->device_id == PCI_DEVICE_ID_NVIDIA_NVENET_32 ||
np->device_id == PCI_DEVICE_ID_NVIDIA_NVENET_33 || np->device_id == PCI_DEVICE_ID_NVIDIA_NVENET_33 ||
@ -1201,12 +1242,23 @@ static int phy_init(struct net_device *dev)
mii_control = mii_rw(dev, np->phyaddr, MII_BMCR, MII_READ); mii_control = mii_rw(dev, np->phyaddr, MII_BMCR, MII_READ);
mii_control |= BMCR_ANENABLE; mii_control |= BMCR_ANENABLE;
/* reset the phy if (np->phy_oui == PHY_OUI_REALTEK &&
* (certain phys need bmcr to be setup with reset) np->phy_model == PHY_MODEL_REALTEK_8211 &&
*/ np->phy_rev == PHY_REV_REALTEK_8211C) {
if (phy_reset(dev, mii_control)) { /* start autoneg since we already performed hw reset above */
printk(KERN_INFO "%s: phy reset failed\n", pci_name(np->pci_dev)); mii_control |= BMCR_ANRESTART;
return PHY_ERROR; if (mii_rw(dev, np->phyaddr, MII_BMCR, mii_control)) {
printk(KERN_INFO "%s: phy init failed\n", pci_name(np->pci_dev));
return PHY_ERROR;
}
} else {
/* reset the phy
* (certain phys need bmcr to be setup with reset)
*/
if (phy_reset(dev, mii_control)) {
printk(KERN_INFO "%s: phy reset failed\n", pci_name(np->pci_dev));
return PHY_ERROR;
}
} }
/* phy vendor specific configuration */ /* phy vendor specific configuration */

View file

@ -69,18 +69,20 @@ static void ri_tasklet(unsigned long dev)
struct net_device *_dev = (struct net_device *)dev; struct net_device *_dev = (struct net_device *)dev;
struct ifb_private *dp = netdev_priv(_dev); struct ifb_private *dp = netdev_priv(_dev);
struct net_device_stats *stats = &_dev->stats; struct net_device_stats *stats = &_dev->stats;
struct netdev_queue *txq;
struct sk_buff *skb; struct sk_buff *skb;
txq = netdev_get_tx_queue(_dev, 0);
dp->st_task_enter++; dp->st_task_enter++;
if ((skb = skb_peek(&dp->tq)) == NULL) { if ((skb = skb_peek(&dp->tq)) == NULL) {
dp->st_txq_refl_try++; dp->st_txq_refl_try++;
if (netif_tx_trylock(_dev)) { if (__netif_tx_trylock(txq)) {
dp->st_rxq_enter++; dp->st_rxq_enter++;
while ((skb = skb_dequeue(&dp->rq)) != NULL) { while ((skb = skb_dequeue(&dp->rq)) != NULL) {
skb_queue_tail(&dp->tq, skb); skb_queue_tail(&dp->tq, skb);
dp->st_rx2tx_tran++; dp->st_rx2tx_tran++;
} }
netif_tx_unlock(_dev); __netif_tx_unlock(txq);
} else { } else {
/* reschedule */ /* reschedule */
dp->st_rxq_notenter++; dp->st_rxq_notenter++;
@ -115,7 +117,7 @@ static void ri_tasklet(unsigned long dev)
BUG(); BUG();
} }
if (netif_tx_trylock(_dev)) { if (__netif_tx_trylock(txq)) {
dp->st_rxq_check++; dp->st_rxq_check++;
if ((skb = skb_peek(&dp->rq)) == NULL) { if ((skb = skb_peek(&dp->rq)) == NULL) {
dp->tasklet_pending = 0; dp->tasklet_pending = 0;
@ -123,10 +125,10 @@ static void ri_tasklet(unsigned long dev)
netif_wake_queue(_dev); netif_wake_queue(_dev);
} else { } else {
dp->st_rxq_rsch++; dp->st_rxq_rsch++;
netif_tx_unlock(_dev); __netif_tx_unlock(txq);
goto resched; goto resched;
} }
netif_tx_unlock(_dev); __netif_tx_unlock(txq);
} else { } else {
resched: resched:
dp->tasklet_pending = 1; dp->tasklet_pending = 1;

View file

@ -107,7 +107,7 @@ static int act200l_open(struct sir_dev *dev)
{ {
struct qos_info *qos = &dev->qos; struct qos_info *qos = &dev->qos;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s()\n", __func__ );
/* Power on the dongle */ /* Power on the dongle */
sirdev_set_dtr_rts(dev, TRUE, TRUE); sirdev_set_dtr_rts(dev, TRUE, TRUE);
@ -124,7 +124,7 @@ static int act200l_open(struct sir_dev *dev)
static int act200l_close(struct sir_dev *dev) static int act200l_close(struct sir_dev *dev)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s()\n", __func__ );
/* Power off the dongle */ /* Power off the dongle */
sirdev_set_dtr_rts(dev, FALSE, FALSE); sirdev_set_dtr_rts(dev, FALSE, FALSE);
@ -143,7 +143,7 @@ static int act200l_change_speed(struct sir_dev *dev, unsigned speed)
u8 control[3]; u8 control[3];
int ret = 0; int ret = 0;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s()\n", __func__ );
/* Clear DTR and set RTS to enter command mode */ /* Clear DTR and set RTS to enter command mode */
sirdev_set_dtr_rts(dev, FALSE, TRUE); sirdev_set_dtr_rts(dev, FALSE, TRUE);
@ -212,7 +212,7 @@ static int act200l_reset(struct sir_dev *dev)
}; };
int ret = 0; int ret = 0;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s()\n", __func__ );
switch (state) { switch (state) {
case SIRDEV_STATE_DONGLE_RESET: case SIRDEV_STATE_DONGLE_RESET:
@ -240,7 +240,7 @@ static int act200l_reset(struct sir_dev *dev)
dev->speed = 9600; dev->speed = 9600;
break; break;
default: default:
IRDA_ERROR("%s(), unknown state %d\n", __FUNCTION__, state); IRDA_ERROR("%s(), unknown state %d\n", __func__, state);
ret = -1; ret = -1;
break; break;
} }

View file

@ -165,7 +165,7 @@ static int actisys_change_speed(struct sir_dev *dev, unsigned speed)
int ret = 0; int ret = 0;
int i = 0; int i = 0;
IRDA_DEBUG(4, "%s(), speed=%d (was %d)\n", __FUNCTION__, IRDA_DEBUG(4, "%s(), speed=%d (was %d)\n", __func__,
speed, dev->speed); speed, dev->speed);
/* dongle was already resetted from irda_request state machine, /* dongle was already resetted from irda_request state machine,

View file

@ -152,7 +152,7 @@ static int __init ali_ircc_init(void)
int reg, revision; int reg, revision;
int i = 0; int i = 0;
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
ret = platform_driver_register(&ali_ircc_driver); ret = platform_driver_register(&ali_ircc_driver);
if (ret) { if (ret) {
@ -166,7 +166,7 @@ static int __init ali_ircc_init(void)
/* Probe for all the ALi chipsets we know about */ /* Probe for all the ALi chipsets we know about */
for (chip= chips; chip->name; chip++, i++) for (chip= chips; chip->name; chip++, i++)
{ {
IRDA_DEBUG(2, "%s(), Probing for %s ...\n", __FUNCTION__, chip->name); IRDA_DEBUG(2, "%s(), Probing for %s ...\n", __func__, chip->name);
/* Try all config registers for this chip */ /* Try all config registers for this chip */
for (cfg=0; cfg<2; cfg++) for (cfg=0; cfg<2; cfg++)
@ -196,11 +196,11 @@ static int __init ali_ircc_init(void)
if (reg == chip->cid_value) if (reg == chip->cid_value)
{ {
IRDA_DEBUG(2, "%s(), Chip found at 0x%03x\n", __FUNCTION__, cfg_base); IRDA_DEBUG(2, "%s(), Chip found at 0x%03x\n", __func__, cfg_base);
outb(0x1F, cfg_base); outb(0x1F, cfg_base);
revision = inb(cfg_base+1); revision = inb(cfg_base+1);
IRDA_DEBUG(2, "%s(), Found %s chip, revision=%d\n", __FUNCTION__, IRDA_DEBUG(2, "%s(), Found %s chip, revision=%d\n", __func__,
chip->name, revision); chip->name, revision);
/* /*
@ -223,14 +223,14 @@ static int __init ali_ircc_init(void)
} }
else else
{ {
IRDA_DEBUG(2, "%s(), No %s chip at 0x%03x\n", __FUNCTION__, chip->name, cfg_base); IRDA_DEBUG(2, "%s(), No %s chip at 0x%03x\n", __func__, chip->name, cfg_base);
} }
/* Exit configuration */ /* Exit configuration */
outb(0xbb, cfg_base); outb(0xbb, cfg_base);
} }
} }
IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __func__);
if (ret) if (ret)
platform_driver_unregister(&ali_ircc_driver); platform_driver_unregister(&ali_ircc_driver);
@ -248,7 +248,7 @@ static void __exit ali_ircc_cleanup(void)
{ {
int i; int i;
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
for (i=0; i < ARRAY_SIZE(dev_self); i++) { for (i=0; i < ARRAY_SIZE(dev_self); i++) {
if (dev_self[i]) if (dev_self[i])
@ -257,7 +257,7 @@ static void __exit ali_ircc_cleanup(void)
platform_driver_unregister(&ali_ircc_driver); platform_driver_unregister(&ali_ircc_driver);
IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __func__);
} }
/* /*
@ -273,11 +273,11 @@ static int ali_ircc_open(int i, chipio_t *info)
int dongle_id; int dongle_id;
int err; int err;
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
if (i >= ARRAY_SIZE(dev_self)) { if (i >= ARRAY_SIZE(dev_self)) {
IRDA_ERROR("%s(), maximum number of supported chips reached!\n", IRDA_ERROR("%s(), maximum number of supported chips reached!\n",
__FUNCTION__); __func__);
return -ENOMEM; return -ENOMEM;
} }
@ -288,7 +288,7 @@ static int ali_ircc_open(int i, chipio_t *info)
dev = alloc_irdadev(sizeof(*self)); dev = alloc_irdadev(sizeof(*self));
if (dev == NULL) { if (dev == NULL) {
IRDA_ERROR("%s(), can't allocate memory for control block!\n", IRDA_ERROR("%s(), can't allocate memory for control block!\n",
__FUNCTION__); __func__);
return -ENOMEM; return -ENOMEM;
} }
@ -312,7 +312,7 @@ static int ali_ircc_open(int i, chipio_t *info)
/* Reserve the ioports that we need */ /* Reserve the ioports that we need */
if (!request_region(self->io.fir_base, self->io.fir_ext, if (!request_region(self->io.fir_base, self->io.fir_ext,
ALI_IRCC_DRIVER_NAME)) { ALI_IRCC_DRIVER_NAME)) {
IRDA_WARNING("%s(), can't get iobase of 0x%03x\n", __FUNCTION__, IRDA_WARNING("%s(), can't get iobase of 0x%03x\n", __func__,
self->io.fir_base); self->io.fir_base);
err = -ENODEV; err = -ENODEV;
goto err_out1; goto err_out1;
@ -370,19 +370,19 @@ static int ali_ircc_open(int i, chipio_t *info)
err = register_netdev(dev); err = register_netdev(dev);
if (err) { if (err) {
IRDA_ERROR("%s(), register_netdev() failed!\n", __FUNCTION__); IRDA_ERROR("%s(), register_netdev() failed!\n", __func__);
goto err_out4; goto err_out4;
} }
IRDA_MESSAGE("IrDA: Registered device %s\n", dev->name); IRDA_MESSAGE("IrDA: Registered device %s\n", dev->name);
/* Check dongle id */ /* Check dongle id */
dongle_id = ali_ircc_read_dongle_id(i, info); dongle_id = ali_ircc_read_dongle_id(i, info);
IRDA_MESSAGE("%s(), %s, Found dongle: %s\n", __FUNCTION__, IRDA_MESSAGE("%s(), %s, Found dongle: %s\n", __func__,
ALI_IRCC_DRIVER_NAME, dongle_types[dongle_id]); ALI_IRCC_DRIVER_NAME, dongle_types[dongle_id]);
self->io.dongle_id = dongle_id; self->io.dongle_id = dongle_id;
IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __func__);
return 0; return 0;
@ -411,7 +411,7 @@ static int __exit ali_ircc_close(struct ali_ircc_cb *self)
{ {
int iobase; int iobase;
IRDA_DEBUG(4, "%s(), ---------------- Start ----------------\n", __FUNCTION__); IRDA_DEBUG(4, "%s(), ---------------- Start ----------------\n", __func__);
IRDA_ASSERT(self != NULL, return -1;); IRDA_ASSERT(self != NULL, return -1;);
@ -421,7 +421,7 @@ static int __exit ali_ircc_close(struct ali_ircc_cb *self)
unregister_netdev(self->netdev); unregister_netdev(self->netdev);
/* Release the PORT that this driver is using */ /* Release the PORT that this driver is using */
IRDA_DEBUG(4, "%s(), Releasing Region %03x\n", __FUNCTION__, self->io.fir_base); IRDA_DEBUG(4, "%s(), Releasing Region %03x\n", __func__, self->io.fir_base);
release_region(self->io.fir_base, self->io.fir_ext); release_region(self->io.fir_base, self->io.fir_ext);
if (self->tx_buff.head) if (self->tx_buff.head)
@ -435,7 +435,7 @@ static int __exit ali_ircc_close(struct ali_ircc_cb *self)
dev_self[self->index] = NULL; dev_self[self->index] = NULL;
free_netdev(self->netdev); free_netdev(self->netdev);
IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __func__);
return 0; return 0;
} }
@ -478,7 +478,7 @@ static int ali_ircc_probe_53(ali_chip_t *chip, chipio_t *info)
int cfg_base = info->cfg_base; int cfg_base = info->cfg_base;
int hi, low, reg; int hi, low, reg;
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
/* Enter Configuration */ /* Enter Configuration */
outb(chip->entr1, cfg_base); outb(chip->entr1, cfg_base);
@ -497,13 +497,13 @@ static int ali_ircc_probe_53(ali_chip_t *chip, chipio_t *info)
info->sir_base = info->fir_base; info->sir_base = info->fir_base;
IRDA_DEBUG(2, "%s(), probing fir_base=0x%03x\n", __FUNCTION__, info->fir_base); IRDA_DEBUG(2, "%s(), probing fir_base=0x%03x\n", __func__, info->fir_base);
/* Read IRQ control register */ /* Read IRQ control register */
outb(0x70, cfg_base); outb(0x70, cfg_base);
reg = inb(cfg_base+1); reg = inb(cfg_base+1);
info->irq = reg & 0x0f; info->irq = reg & 0x0f;
IRDA_DEBUG(2, "%s(), probing irq=%d\n", __FUNCTION__, info->irq); IRDA_DEBUG(2, "%s(), probing irq=%d\n", __func__, info->irq);
/* Read DMA channel */ /* Read DMA channel */
outb(0x74, cfg_base); outb(0x74, cfg_base);
@ -511,26 +511,26 @@ static int ali_ircc_probe_53(ali_chip_t *chip, chipio_t *info)
info->dma = reg & 0x07; info->dma = reg & 0x07;
if(info->dma == 0x04) if(info->dma == 0x04)
IRDA_WARNING("%s(), No DMA channel assigned !\n", __FUNCTION__); IRDA_WARNING("%s(), No DMA channel assigned !\n", __func__);
else else
IRDA_DEBUG(2, "%s(), probing dma=%d\n", __FUNCTION__, info->dma); IRDA_DEBUG(2, "%s(), probing dma=%d\n", __func__, info->dma);
/* Read Enabled Status */ /* Read Enabled Status */
outb(0x30, cfg_base); outb(0x30, cfg_base);
reg = inb(cfg_base+1); reg = inb(cfg_base+1);
info->enabled = (reg & 0x80) && (reg & 0x01); info->enabled = (reg & 0x80) && (reg & 0x01);
IRDA_DEBUG(2, "%s(), probing enabled=%d\n", __FUNCTION__, info->enabled); IRDA_DEBUG(2, "%s(), probing enabled=%d\n", __func__, info->enabled);
/* Read Power Status */ /* Read Power Status */
outb(0x22, cfg_base); outb(0x22, cfg_base);
reg = inb(cfg_base+1); reg = inb(cfg_base+1);
info->suspended = (reg & 0x20); info->suspended = (reg & 0x20);
IRDA_DEBUG(2, "%s(), probing suspended=%d\n", __FUNCTION__, info->suspended); IRDA_DEBUG(2, "%s(), probing suspended=%d\n", __func__, info->suspended);
/* Exit configuration */ /* Exit configuration */
outb(0xbb, cfg_base); outb(0xbb, cfg_base);
IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __func__);
return 0; return 0;
} }
@ -548,7 +548,7 @@ static int ali_ircc_setup(chipio_t *info)
int version; int version;
int iobase = info->fir_base; int iobase = info->fir_base;
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
/* Locking comments : /* Locking comments :
* Most operations here need to be protected. We are called before * Most operations here need to be protected. We are called before
@ -609,7 +609,7 @@ static int ali_ircc_setup(chipio_t *info)
// outb(UART_IER_RDI, iobase+UART_IER); //benjamin 2000/11/23 01:25PM // outb(UART_IER_RDI, iobase+UART_IER); //benjamin 2000/11/23 01:25PM
// Turn on the interrupts in ali_ircc_net_open // Turn on the interrupts in ali_ircc_net_open
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__);
return 0; return 0;
} }
@ -626,7 +626,7 @@ static int ali_ircc_read_dongle_id (int i, chipio_t *info)
int dongle_id, reg; int dongle_id, reg;
int cfg_base = info->cfg_base; int cfg_base = info->cfg_base;
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
/* Enter Configuration */ /* Enter Configuration */
outb(chips[i].entr1, cfg_base); outb(chips[i].entr1, cfg_base);
@ -640,13 +640,13 @@ static int ali_ircc_read_dongle_id (int i, chipio_t *info)
outb(0xf0, cfg_base); outb(0xf0, cfg_base);
reg = inb(cfg_base+1); reg = inb(cfg_base+1);
dongle_id = ((reg>>6)&0x02) | ((reg>>5)&0x01); dongle_id = ((reg>>6)&0x02) | ((reg>>5)&0x01);
IRDA_DEBUG(2, "%s(), probing dongle_id=%d, dongle_types=%s\n", __FUNCTION__, IRDA_DEBUG(2, "%s(), probing dongle_id=%d, dongle_types=%s\n", __func__,
dongle_id, dongle_types[dongle_id]); dongle_id, dongle_types[dongle_id]);
/* Exit configuration */ /* Exit configuration */
outb(0xbb, cfg_base); outb(0xbb, cfg_base);
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__);
return dongle_id; return dongle_id;
} }
@ -663,7 +663,7 @@ static irqreturn_t ali_ircc_interrupt(int irq, void *dev_id)
struct ali_ircc_cb *self; struct ali_ircc_cb *self;
int ret; int ret;
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
self = dev->priv; self = dev->priv;
@ -677,7 +677,7 @@ static irqreturn_t ali_ircc_interrupt(int irq, void *dev_id)
spin_unlock(&self->lock); spin_unlock(&self->lock);
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__);
return ret; return ret;
} }
/* /*
@ -691,7 +691,7 @@ static irqreturn_t ali_ircc_fir_interrupt(struct ali_ircc_cb *self)
__u8 eir, OldMessageCount; __u8 eir, OldMessageCount;
int iobase, tmp; int iobase, tmp;
IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __FUNCTION__); IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __func__);
iobase = self->io.fir_base; iobase = self->io.fir_base;
@ -704,10 +704,10 @@ static irqreturn_t ali_ircc_fir_interrupt(struct ali_ircc_cb *self)
//self->ier = inb(iobase+FIR_IER); 2000/12/1 04:32PM //self->ier = inb(iobase+FIR_IER); 2000/12/1 04:32PM
eir = self->InterruptID & self->ier; /* Mask out the interesting ones */ eir = self->InterruptID & self->ier; /* Mask out the interesting ones */
IRDA_DEBUG(1, "%s(), self->InterruptID = %x\n", __FUNCTION__,self->InterruptID); IRDA_DEBUG(1, "%s(), self->InterruptID = %x\n", __func__,self->InterruptID);
IRDA_DEBUG(1, "%s(), self->LineStatus = %x\n", __FUNCTION__,self->LineStatus); IRDA_DEBUG(1, "%s(), self->LineStatus = %x\n", __func__,self->LineStatus);
IRDA_DEBUG(1, "%s(), self->ier = %x\n", __FUNCTION__,self->ier); IRDA_DEBUG(1, "%s(), self->ier = %x\n", __func__,self->ier);
IRDA_DEBUG(1, "%s(), eir = %x\n", __FUNCTION__,eir); IRDA_DEBUG(1, "%s(), eir = %x\n", __func__,eir);
/* Disable interrupts */ /* Disable interrupts */
SetCOMInterrupts(self, FALSE); SetCOMInterrupts(self, FALSE);
@ -718,7 +718,7 @@ static irqreturn_t ali_ircc_fir_interrupt(struct ali_ircc_cb *self)
{ {
if (self->io.direction == IO_XMIT) /* TX */ if (self->io.direction == IO_XMIT) /* TX */
{ {
IRDA_DEBUG(1, "%s(), ******* IIR_EOM (Tx) *******\n", __FUNCTION__); IRDA_DEBUG(1, "%s(), ******* IIR_EOM (Tx) *******\n", __func__);
if(ali_ircc_dma_xmit_complete(self)) if(ali_ircc_dma_xmit_complete(self))
{ {
@ -737,23 +737,23 @@ static irqreturn_t ali_ircc_fir_interrupt(struct ali_ircc_cb *self)
} }
else /* RX */ else /* RX */
{ {
IRDA_DEBUG(1, "%s(), ******* IIR_EOM (Rx) *******\n", __FUNCTION__); IRDA_DEBUG(1, "%s(), ******* IIR_EOM (Rx) *******\n", __func__);
if(OldMessageCount > ((self->LineStatus+1) & 0x07)) if(OldMessageCount > ((self->LineStatus+1) & 0x07))
{ {
self->rcvFramesOverflow = TRUE; self->rcvFramesOverflow = TRUE;
IRDA_DEBUG(1, "%s(), ******* self->rcvFramesOverflow = TRUE ******** \n", __FUNCTION__); IRDA_DEBUG(1, "%s(), ******* self->rcvFramesOverflow = TRUE ******** \n", __func__);
} }
if (ali_ircc_dma_receive_complete(self)) if (ali_ircc_dma_receive_complete(self))
{ {
IRDA_DEBUG(1, "%s(), ******* receive complete ******** \n", __FUNCTION__); IRDA_DEBUG(1, "%s(), ******* receive complete ******** \n", __func__);
self->ier = IER_EOM; self->ier = IER_EOM;
} }
else else
{ {
IRDA_DEBUG(1, "%s(), ******* Not receive complete ******** \n", __FUNCTION__); IRDA_DEBUG(1, "%s(), ******* Not receive complete ******** \n", __func__);
self->ier = IER_EOM | IER_TIMER; self->ier = IER_EOM | IER_TIMER;
} }
@ -766,7 +766,7 @@ static irqreturn_t ali_ircc_fir_interrupt(struct ali_ircc_cb *self)
if(OldMessageCount > ((self->LineStatus+1) & 0x07)) if(OldMessageCount > ((self->LineStatus+1) & 0x07))
{ {
self->rcvFramesOverflow = TRUE; self->rcvFramesOverflow = TRUE;
IRDA_DEBUG(1, "%s(), ******* self->rcvFramesOverflow = TRUE ******* \n", __FUNCTION__); IRDA_DEBUG(1, "%s(), ******* self->rcvFramesOverflow = TRUE ******* \n", __func__);
} }
/* Disable Timer */ /* Disable Timer */
switch_bank(iobase, BANK1); switch_bank(iobase, BANK1);
@ -798,7 +798,7 @@ static irqreturn_t ali_ircc_fir_interrupt(struct ali_ircc_cb *self)
/* Restore Interrupt */ /* Restore Interrupt */
SetCOMInterrupts(self, TRUE); SetCOMInterrupts(self, TRUE);
IRDA_DEBUG(1, "%s(), ----------------- End ---------------\n", __FUNCTION__); IRDA_DEBUG(1, "%s(), ----------------- End ---------------\n", __func__);
return IRQ_RETVAL(eir); return IRQ_RETVAL(eir);
} }
@ -813,7 +813,7 @@ static irqreturn_t ali_ircc_sir_interrupt(struct ali_ircc_cb *self)
int iobase; int iobase;
int iir, lsr; int iir, lsr;
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
iobase = self->io.sir_base; iobase = self->io.sir_base;
@ -822,13 +822,13 @@ static irqreturn_t ali_ircc_sir_interrupt(struct ali_ircc_cb *self)
/* Clear interrupt */ /* Clear interrupt */
lsr = inb(iobase+UART_LSR); lsr = inb(iobase+UART_LSR);
IRDA_DEBUG(4, "%s(), iir=%02x, lsr=%02x, iobase=%#x\n", __FUNCTION__, IRDA_DEBUG(4, "%s(), iir=%02x, lsr=%02x, iobase=%#x\n", __func__,
iir, lsr, iobase); iir, lsr, iobase);
switch (iir) switch (iir)
{ {
case UART_IIR_RLSI: case UART_IIR_RLSI:
IRDA_DEBUG(2, "%s(), RLSI\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), RLSI\n", __func__);
break; break;
case UART_IIR_RDI: case UART_IIR_RDI:
/* Receive interrupt */ /* Receive interrupt */
@ -842,14 +842,14 @@ static irqreturn_t ali_ircc_sir_interrupt(struct ali_ircc_cb *self)
} }
break; break;
default: default:
IRDA_DEBUG(0, "%s(), unhandled IIR=%#x\n", __FUNCTION__, iir); IRDA_DEBUG(0, "%s(), unhandled IIR=%#x\n", __func__, iir);
break; break;
} }
} }
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__);
return IRQ_RETVAL(iir); return IRQ_RETVAL(iir);
} }
@ -866,7 +866,7 @@ static void ali_ircc_sir_receive(struct ali_ircc_cb *self)
int boguscount = 0; int boguscount = 0;
int iobase; int iobase;
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
iobase = self->io.sir_base; iobase = self->io.sir_base;
@ -881,12 +881,12 @@ static void ali_ircc_sir_receive(struct ali_ircc_cb *self)
/* Make sure we don't stay here too long */ /* Make sure we don't stay here too long */
if (boguscount++ > 32) { if (boguscount++ > 32) {
IRDA_DEBUG(2,"%s(), breaking!\n", __FUNCTION__); IRDA_DEBUG(2,"%s(), breaking!\n", __func__);
break; break;
} }
} while (inb(iobase+UART_LSR) & UART_LSR_DR); } while (inb(iobase+UART_LSR) & UART_LSR_DR);
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
} }
/* /*
@ -903,7 +903,7 @@ static void ali_ircc_sir_write_wakeup(struct ali_ircc_cb *self)
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__ );
iobase = self->io.sir_base; iobase = self->io.sir_base;
@ -922,16 +922,16 @@ static void ali_ircc_sir_write_wakeup(struct ali_ircc_cb *self)
{ {
/* We must wait until all data are gone */ /* We must wait until all data are gone */
while(!(inb(iobase+UART_LSR) & UART_LSR_TEMT)) while(!(inb(iobase+UART_LSR) & UART_LSR_TEMT))
IRDA_DEBUG(1, "%s(), UART_LSR_THRE\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), UART_LSR_THRE\n", __func__ );
IRDA_DEBUG(1, "%s(), Changing speed! self->new_speed = %d\n", __FUNCTION__ , self->new_speed); IRDA_DEBUG(1, "%s(), Changing speed! self->new_speed = %d\n", __func__ , self->new_speed);
ali_ircc_change_speed(self, self->new_speed); ali_ircc_change_speed(self, self->new_speed);
self->new_speed = 0; self->new_speed = 0;
// benjamin 2000/11/10 06:32PM // benjamin 2000/11/10 06:32PM
if (self->io.speed > 115200) if (self->io.speed > 115200)
{ {
IRDA_DEBUG(2, "%s(), ali_ircc_change_speed from UART_LSR_TEMT \n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ali_ircc_change_speed from UART_LSR_TEMT \n", __func__ );
self->ier = IER_EOM; self->ier = IER_EOM;
// SetCOMInterrupts(self, TRUE); // SetCOMInterrupts(self, TRUE);
@ -949,7 +949,7 @@ static void ali_ircc_sir_write_wakeup(struct ali_ircc_cb *self)
outb(UART_IER_RDI, iobase+UART_IER); outb(UART_IER_RDI, iobase+UART_IER);
} }
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
} }
static void ali_ircc_change_speed(struct ali_ircc_cb *self, __u32 baud) static void ali_ircc_change_speed(struct ali_ircc_cb *self, __u32 baud)
@ -957,9 +957,9 @@ static void ali_ircc_change_speed(struct ali_ircc_cb *self, __u32 baud)
struct net_device *dev = self->netdev; struct net_device *dev = self->netdev;
int iobase; int iobase;
IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __func__ );
IRDA_DEBUG(2, "%s(), setting speed = %d \n", __FUNCTION__ , baud); IRDA_DEBUG(2, "%s(), setting speed = %d \n", __func__ , baud);
/* This function *must* be called with irq off and spin-lock. /* This function *must* be called with irq off and spin-lock.
* - Jean II */ * - Jean II */
@ -998,7 +998,7 @@ static void ali_ircc_change_speed(struct ali_ircc_cb *self, __u32 baud)
netif_wake_queue(self->netdev); netif_wake_queue(self->netdev);
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
} }
static void ali_ircc_fir_change_speed(struct ali_ircc_cb *priv, __u32 baud) static void ali_ircc_fir_change_speed(struct ali_ircc_cb *priv, __u32 baud)
@ -1008,14 +1008,14 @@ static void ali_ircc_fir_change_speed(struct ali_ircc_cb *priv, __u32 baud)
struct ali_ircc_cb *self = (struct ali_ircc_cb *) priv; struct ali_ircc_cb *self = (struct ali_ircc_cb *) priv;
struct net_device *dev; struct net_device *dev;
IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __func__ );
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
dev = self->netdev; dev = self->netdev;
iobase = self->io.fir_base; iobase = self->io.fir_base;
IRDA_DEBUG(1, "%s(), self->io.speed = %d, change to speed = %d\n", __FUNCTION__ ,self->io.speed,baud); IRDA_DEBUG(1, "%s(), self->io.speed = %d, change to speed = %d\n", __func__ ,self->io.speed,baud);
/* Come from SIR speed */ /* Come from SIR speed */
if(self->io.speed <=115200) if(self->io.speed <=115200)
@ -1029,7 +1029,7 @@ static void ali_ircc_fir_change_speed(struct ali_ircc_cb *priv, __u32 baud)
// Set Dongle Speed mode // Set Dongle Speed mode
ali_ircc_change_dongle_speed(self, baud); ali_ircc_change_dongle_speed(self, baud);
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __func__ );
} }
/* /*
@ -1047,9 +1047,9 @@ static void ali_ircc_sir_change_speed(struct ali_ircc_cb *priv, __u32 speed)
int lcr; /* Line control reg */ int lcr; /* Line control reg */
int divisor; int divisor;
IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __func__ );
IRDA_DEBUG(1, "%s(), Setting speed to: %d\n", __FUNCTION__ , speed); IRDA_DEBUG(1, "%s(), Setting speed to: %d\n", __func__ , speed);
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
@ -1103,7 +1103,7 @@ static void ali_ircc_sir_change_speed(struct ali_ircc_cb *priv, __u32 speed)
spin_unlock_irqrestore(&self->lock, flags); spin_unlock_irqrestore(&self->lock, flags);
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __func__ );
} }
static void ali_ircc_change_dongle_speed(struct ali_ircc_cb *priv, int speed) static void ali_ircc_change_dongle_speed(struct ali_ircc_cb *priv, int speed)
@ -1113,14 +1113,14 @@ static void ali_ircc_change_dongle_speed(struct ali_ircc_cb *priv, int speed)
int iobase,dongle_id; int iobase,dongle_id;
int tmp = 0; int tmp = 0;
IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __func__ );
iobase = self->io.fir_base; /* or iobase = self->io.sir_base; */ iobase = self->io.fir_base; /* or iobase = self->io.sir_base; */
dongle_id = self->io.dongle_id; dongle_id = self->io.dongle_id;
/* We are already locked, no need to do it again */ /* We are already locked, no need to do it again */
IRDA_DEBUG(1, "%s(), Set Speed for %s , Speed = %d\n", __FUNCTION__ , dongle_types[dongle_id], speed); IRDA_DEBUG(1, "%s(), Set Speed for %s , Speed = %d\n", __func__ , dongle_types[dongle_id], speed);
switch_bank(iobase, BANK2); switch_bank(iobase, BANK2);
tmp = inb(iobase+FIR_IRDA_CR); tmp = inb(iobase+FIR_IRDA_CR);
@ -1284,7 +1284,7 @@ static void ali_ircc_change_dongle_speed(struct ali_ircc_cb *priv, int speed)
switch_bank(iobase, BANK0); switch_bank(iobase, BANK0);
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __func__ );
} }
/* /*
@ -1297,11 +1297,11 @@ static int ali_ircc_sir_write(int iobase, int fifo_size, __u8 *buf, int len)
{ {
int actual = 0; int actual = 0;
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__ );
/* Tx FIFO should be empty! */ /* Tx FIFO should be empty! */
if (!(inb(iobase+UART_LSR) & UART_LSR_THRE)) { if (!(inb(iobase+UART_LSR) & UART_LSR_THRE)) {
IRDA_DEBUG(0, "%s(), failed, fifo not empty!\n", __FUNCTION__ ); IRDA_DEBUG(0, "%s(), failed, fifo not empty!\n", __func__ );
return 0; return 0;
} }
@ -1313,7 +1313,7 @@ static int ali_ircc_sir_write(int iobase, int fifo_size, __u8 *buf, int len)
actual++; actual++;
} }
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
return actual; return actual;
} }
@ -1329,7 +1329,7 @@ static int ali_ircc_net_open(struct net_device *dev)
int iobase; int iobase;
char hwname[32]; char hwname[32];
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__ );
IRDA_ASSERT(dev != NULL, return -1;); IRDA_ASSERT(dev != NULL, return -1;);
@ -1375,7 +1375,7 @@ static int ali_ircc_net_open(struct net_device *dev)
*/ */
self->irlap = irlap_open(dev, &self->qos, hwname); self->irlap = irlap_open(dev, &self->qos, hwname);
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
return 0; return 0;
} }
@ -1392,7 +1392,7 @@ static int ali_ircc_net_close(struct net_device *dev)
struct ali_ircc_cb *self; struct ali_ircc_cb *self;
//int iobase; //int iobase;
IRDA_DEBUG(4, "%s(), ---------------- Start ----------------\n", __FUNCTION__ ); IRDA_DEBUG(4, "%s(), ---------------- Start ----------------\n", __func__ );
IRDA_ASSERT(dev != NULL, return -1;); IRDA_ASSERT(dev != NULL, return -1;);
@ -1415,7 +1415,7 @@ static int ali_ircc_net_close(struct net_device *dev)
free_irq(self->io.irq, dev); free_irq(self->io.irq, dev);
free_dma(self->io.dma); free_dma(self->io.dma);
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
return 0; return 0;
} }
@ -1434,7 +1434,7 @@ static int ali_ircc_fir_hard_xmit(struct sk_buff *skb, struct net_device *dev)
__u32 speed; __u32 speed;
int mtt, diff; int mtt, diff;
IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __func__ );
self = (struct ali_ircc_cb *) dev->priv; self = (struct ali_ircc_cb *) dev->priv;
iobase = self->io.fir_base; iobase = self->io.fir_base;
@ -1488,7 +1488,7 @@ static int ali_ircc_fir_hard_xmit(struct sk_buff *skb, struct net_device *dev)
diff = self->now.tv_usec - self->stamp.tv_usec; diff = self->now.tv_usec - self->stamp.tv_usec;
/* self->stamp is set from ali_ircc_dma_receive_complete() */ /* self->stamp is set from ali_ircc_dma_receive_complete() */
IRDA_DEBUG(1, "%s(), ******* diff = %d ******* \n", __FUNCTION__ , diff); IRDA_DEBUG(1, "%s(), ******* diff = %d ******* \n", __func__ , diff);
if (diff < 0) if (diff < 0)
diff += 1000000; diff += 1000000;
@ -1510,7 +1510,7 @@ static int ali_ircc_fir_hard_xmit(struct sk_buff *skb, struct net_device *dev)
/* Adjust for timer resolution */ /* Adjust for timer resolution */
mtt = (mtt+250) / 500; /* 4 discard, 5 get advanced, Let's round off */ mtt = (mtt+250) / 500; /* 4 discard, 5 get advanced, Let's round off */
IRDA_DEBUG(1, "%s(), ************** mtt = %d ***********\n", __FUNCTION__ , mtt); IRDA_DEBUG(1, "%s(), ************** mtt = %d ***********\n", __func__ , mtt);
/* Setup timer */ /* Setup timer */
if (mtt == 1) /* 500 us */ if (mtt == 1) /* 500 us */
@ -1567,7 +1567,7 @@ static int ali_ircc_fir_hard_xmit(struct sk_buff *skb, struct net_device *dev)
spin_unlock_irqrestore(&self->lock, flags); spin_unlock_irqrestore(&self->lock, flags);
dev_kfree_skb(skb); dev_kfree_skb(skb);
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __func__ );
return 0; return 0;
} }
@ -1578,7 +1578,7 @@ static void ali_ircc_dma_xmit(struct ali_ircc_cb *self)
unsigned char FIFO_OPTI, Hi, Lo; unsigned char FIFO_OPTI, Hi, Lo;
IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __func__ );
iobase = self->io.fir_base; iobase = self->io.fir_base;
@ -1629,7 +1629,7 @@ static void ali_ircc_dma_xmit(struct ali_ircc_cb *self)
tmp = inb(iobase+FIR_LCR_B); tmp = inb(iobase+FIR_LCR_B);
tmp &= ~0x20; // Disable SIP tmp &= ~0x20; // Disable SIP
outb(((unsigned char)(tmp & 0x3f) | LCR_B_TX_MODE) & ~LCR_B_BW, iobase+FIR_LCR_B); outb(((unsigned char)(tmp & 0x3f) | LCR_B_TX_MODE) & ~LCR_B_BW, iobase+FIR_LCR_B);
IRDA_DEBUG(1, "%s(), ******* Change to TX mode: FIR_LCR_B = 0x%x ******* \n", __FUNCTION__ , inb(iobase+FIR_LCR_B)); IRDA_DEBUG(1, "%s(), ******* Change to TX mode: FIR_LCR_B = 0x%x ******* \n", __func__ , inb(iobase+FIR_LCR_B));
outb(0, iobase+FIR_LSR); outb(0, iobase+FIR_LSR);
@ -1639,7 +1639,7 @@ static void ali_ircc_dma_xmit(struct ali_ircc_cb *self)
switch_bank(iobase, BANK0); switch_bank(iobase, BANK0);
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __func__ );
} }
static int ali_ircc_dma_xmit_complete(struct ali_ircc_cb *self) static int ali_ircc_dma_xmit_complete(struct ali_ircc_cb *self)
@ -1647,7 +1647,7 @@ static int ali_ircc_dma_xmit_complete(struct ali_ircc_cb *self)
int iobase; int iobase;
int ret = TRUE; int ret = TRUE;
IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __func__ );
iobase = self->io.fir_base; iobase = self->io.fir_base;
@ -1660,7 +1660,7 @@ static int ali_ircc_dma_xmit_complete(struct ali_ircc_cb *self)
if((inb(iobase+FIR_LSR) & LSR_FRAME_ABORT) == LSR_FRAME_ABORT) if((inb(iobase+FIR_LSR) & LSR_FRAME_ABORT) == LSR_FRAME_ABORT)
{ {
IRDA_ERROR("%s(), ********* LSR_FRAME_ABORT *********\n", __FUNCTION__); IRDA_ERROR("%s(), ********* LSR_FRAME_ABORT *********\n", __func__);
self->stats.tx_errors++; self->stats.tx_errors++;
self->stats.tx_fifo_errors++; self->stats.tx_fifo_errors++;
} }
@ -1703,7 +1703,7 @@ static int ali_ircc_dma_xmit_complete(struct ali_ircc_cb *self)
switch_bank(iobase, BANK0); switch_bank(iobase, BANK0);
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __func__ );
return ret; return ret;
} }
@ -1718,7 +1718,7 @@ static int ali_ircc_dma_receive(struct ali_ircc_cb *self)
{ {
int iobase, tmp; int iobase, tmp;
IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __func__ );
iobase = self->io.fir_base; iobase = self->io.fir_base;
@ -1756,7 +1756,7 @@ static int ali_ircc_dma_receive(struct ali_ircc_cb *self)
//switch_bank(iobase, BANK0); //switch_bank(iobase, BANK0);
tmp = inb(iobase+FIR_LCR_B); tmp = inb(iobase+FIR_LCR_B);
outb((unsigned char)(tmp &0x3f) | LCR_B_RX_MODE | LCR_B_BW , iobase + FIR_LCR_B); // 2000/12/1 05:16PM outb((unsigned char)(tmp &0x3f) | LCR_B_RX_MODE | LCR_B_BW , iobase + FIR_LCR_B); // 2000/12/1 05:16PM
IRDA_DEBUG(1, "%s(), *** Change To RX mode: FIR_LCR_B = 0x%x *** \n", __FUNCTION__ , inb(iobase+FIR_LCR_B)); IRDA_DEBUG(1, "%s(), *** Change To RX mode: FIR_LCR_B = 0x%x *** \n", __func__ , inb(iobase+FIR_LCR_B));
/* Set Rx Threshold */ /* Set Rx Threshold */
switch_bank(iobase, BANK1); switch_bank(iobase, BANK1);
@ -1768,7 +1768,7 @@ static int ali_ircc_dma_receive(struct ali_ircc_cb *self)
outb(CR_DMA_EN | CR_DMA_BURST, iobase+FIR_CR); outb(CR_DMA_EN | CR_DMA_BURST, iobase+FIR_CR);
switch_bank(iobase, BANK0); switch_bank(iobase, BANK0);
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __func__ );
return 0; return 0;
} }
@ -1779,7 +1779,7 @@ static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self)
__u8 status, MessageCount; __u8 status, MessageCount;
int len, i, iobase, val; int len, i, iobase, val;
IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __func__ );
st_fifo = &self->st_fifo; st_fifo = &self->st_fifo;
iobase = self->io.fir_base; iobase = self->io.fir_base;
@ -1788,7 +1788,7 @@ static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self)
MessageCount = inb(iobase+ FIR_LSR)&0x07; MessageCount = inb(iobase+ FIR_LSR)&0x07;
if (MessageCount > 0) if (MessageCount > 0)
IRDA_DEBUG(0, "%s(), Messsage count = %d,\n", __FUNCTION__ , MessageCount); IRDA_DEBUG(0, "%s(), Messsage count = %d,\n", __func__ , MessageCount);
for (i=0; i<=MessageCount; i++) for (i=0; i<=MessageCount; i++)
{ {
@ -1801,11 +1801,11 @@ static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self)
len = len << 8; len = len << 8;
len |= inb(iobase+FIR_RX_DSR_LO); len |= inb(iobase+FIR_RX_DSR_LO);
IRDA_DEBUG(1, "%s(), RX Length = 0x%.2x,\n", __FUNCTION__ , len); IRDA_DEBUG(1, "%s(), RX Length = 0x%.2x,\n", __func__ , len);
IRDA_DEBUG(1, "%s(), RX Status = 0x%.2x,\n", __FUNCTION__ , status); IRDA_DEBUG(1, "%s(), RX Status = 0x%.2x,\n", __func__ , status);
if (st_fifo->tail >= MAX_RX_WINDOW) { if (st_fifo->tail >= MAX_RX_WINDOW) {
IRDA_DEBUG(0, "%s(), window is full!\n", __FUNCTION__ ); IRDA_DEBUG(0, "%s(), window is full!\n", __func__ );
continue; continue;
} }
@ -1828,7 +1828,7 @@ static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self)
/* Check for errors */ /* Check for errors */
if ((status & 0xd8) || self->rcvFramesOverflow || (len==0)) if ((status & 0xd8) || self->rcvFramesOverflow || (len==0))
{ {
IRDA_DEBUG(0,"%s(), ************* RX Errors ************ \n", __FUNCTION__ ); IRDA_DEBUG(0,"%s(), ************* RX Errors ************ \n", __func__ );
/* Skip frame */ /* Skip frame */
self->stats.rx_errors++; self->stats.rx_errors++;
@ -1838,29 +1838,29 @@ static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self)
if (status & LSR_FIFO_UR) if (status & LSR_FIFO_UR)
{ {
self->stats.rx_frame_errors++; self->stats.rx_frame_errors++;
IRDA_DEBUG(0,"%s(), ************* FIFO Errors ************ \n", __FUNCTION__ ); IRDA_DEBUG(0,"%s(), ************* FIFO Errors ************ \n", __func__ );
} }
if (status & LSR_FRAME_ERROR) if (status & LSR_FRAME_ERROR)
{ {
self->stats.rx_frame_errors++; self->stats.rx_frame_errors++;
IRDA_DEBUG(0,"%s(), ************* FRAME Errors ************ \n", __FUNCTION__ ); IRDA_DEBUG(0,"%s(), ************* FRAME Errors ************ \n", __func__ );
} }
if (status & LSR_CRC_ERROR) if (status & LSR_CRC_ERROR)
{ {
self->stats.rx_crc_errors++; self->stats.rx_crc_errors++;
IRDA_DEBUG(0,"%s(), ************* CRC Errors ************ \n", __FUNCTION__ ); IRDA_DEBUG(0,"%s(), ************* CRC Errors ************ \n", __func__ );
} }
if(self->rcvFramesOverflow) if(self->rcvFramesOverflow)
{ {
self->stats.rx_frame_errors++; self->stats.rx_frame_errors++;
IRDA_DEBUG(0,"%s(), ************* Overran DMA buffer ************ \n", __FUNCTION__ ); IRDA_DEBUG(0,"%s(), ************* Overran DMA buffer ************ \n", __func__ );
} }
if(len == 0) if(len == 0)
{ {
self->stats.rx_frame_errors++; self->stats.rx_frame_errors++;
IRDA_DEBUG(0,"%s(), ********** Receive Frame Size = 0 ********* \n", __FUNCTION__ ); IRDA_DEBUG(0,"%s(), ********** Receive Frame Size = 0 ********* \n", __func__ );
} }
} }
else else
@ -1872,7 +1872,7 @@ static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self)
val = inb(iobase+FIR_BSR); val = inb(iobase+FIR_BSR);
if ((val& BSR_FIFO_NOT_EMPTY)== 0x80) if ((val& BSR_FIFO_NOT_EMPTY)== 0x80)
{ {
IRDA_DEBUG(0, "%s(), ************* BSR_FIFO_NOT_EMPTY ************ \n", __FUNCTION__ ); IRDA_DEBUG(0, "%s(), ************* BSR_FIFO_NOT_EMPTY ************ \n", __func__ );
/* Put this entry back in fifo */ /* Put this entry back in fifo */
st_fifo->head--; st_fifo->head--;
@ -1909,7 +1909,7 @@ static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self)
{ {
IRDA_WARNING("%s(), memory squeeze, " IRDA_WARNING("%s(), memory squeeze, "
"dropping frame.\n", "dropping frame.\n",
__FUNCTION__); __func__);
self->stats.rx_dropped++; self->stats.rx_dropped++;
return FALSE; return FALSE;
@ -1937,7 +1937,7 @@ static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self)
switch_bank(iobase, BANK0); switch_bank(iobase, BANK0);
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __func__ );
return TRUE; return TRUE;
} }
@ -1956,7 +1956,7 @@ static int ali_ircc_sir_hard_xmit(struct sk_buff *skb, struct net_device *dev)
int iobase; int iobase;
__u32 speed; __u32 speed;
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__ );
IRDA_ASSERT(dev != NULL, return 0;); IRDA_ASSERT(dev != NULL, return 0;);
@ -2005,7 +2005,7 @@ static int ali_ircc_sir_hard_xmit(struct sk_buff *skb, struct net_device *dev)
dev_kfree_skb(skb); dev_kfree_skb(skb);
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
return 0; return 0;
} }
@ -2024,7 +2024,7 @@ static int ali_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
unsigned long flags; unsigned long flags;
int ret = 0; int ret = 0;
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__ );
IRDA_ASSERT(dev != NULL, return -1;); IRDA_ASSERT(dev != NULL, return -1;);
@ -2032,11 +2032,11 @@ static int ali_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
IRDA_ASSERT(self != NULL, return -1;); IRDA_ASSERT(self != NULL, return -1;);
IRDA_DEBUG(2, "%s(), %s, (cmd=0x%X)\n", __FUNCTION__ , dev->name, cmd); IRDA_DEBUG(2, "%s(), %s, (cmd=0x%X)\n", __func__ , dev->name, cmd);
switch (cmd) { switch (cmd) {
case SIOCSBANDWIDTH: /* Set bandwidth */ case SIOCSBANDWIDTH: /* Set bandwidth */
IRDA_DEBUG(1, "%s(), SIOCSBANDWIDTH\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), SIOCSBANDWIDTH\n", __func__ );
/* /*
* This function will also be used by IrLAP to change the * This function will also be used by IrLAP to change the
* speed, so we still must allow for speed change within * speed, so we still must allow for speed change within
@ -2050,13 +2050,13 @@ static int ali_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
spin_unlock_irqrestore(&self->lock, flags); spin_unlock_irqrestore(&self->lock, flags);
break; break;
case SIOCSMEDIABUSY: /* Set media busy */ case SIOCSMEDIABUSY: /* Set media busy */
IRDA_DEBUG(1, "%s(), SIOCSMEDIABUSY\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), SIOCSMEDIABUSY\n", __func__ );
if (!capable(CAP_NET_ADMIN)) if (!capable(CAP_NET_ADMIN))
return -EPERM; return -EPERM;
irda_device_set_media_busy(self->netdev, TRUE); irda_device_set_media_busy(self->netdev, TRUE);
break; break;
case SIOCGRECEIVING: /* Check if we are receiving right now */ case SIOCGRECEIVING: /* Check if we are receiving right now */
IRDA_DEBUG(2, "%s(), SIOCGRECEIVING\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), SIOCGRECEIVING\n", __func__ );
/* This is protected */ /* This is protected */
irq->ifr_receiving = ali_ircc_is_receiving(self); irq->ifr_receiving = ali_ircc_is_receiving(self);
break; break;
@ -2064,7 +2064,7 @@ static int ali_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
ret = -EOPNOTSUPP; ret = -EOPNOTSUPP;
} }
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
return ret; return ret;
} }
@ -2081,7 +2081,7 @@ static int ali_ircc_is_receiving(struct ali_ircc_cb *self)
int status = FALSE; int status = FALSE;
int iobase; int iobase;
IRDA_DEBUG(2, "%s(), ---------------- Start -----------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ---------------- Start -----------------\n", __func__ );
IRDA_ASSERT(self != NULL, return FALSE;); IRDA_ASSERT(self != NULL, return FALSE;);
@ -2095,7 +2095,7 @@ static int ali_ircc_is_receiving(struct ali_ircc_cb *self)
if((inb(iobase+FIR_FIFO_FR) & 0x3f) != 0) if((inb(iobase+FIR_FIFO_FR) & 0x3f) != 0)
{ {
/* We are receiving something */ /* We are receiving something */
IRDA_DEBUG(1, "%s(), We are receiving something\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), We are receiving something\n", __func__ );
status = TRUE; status = TRUE;
} }
switch_bank(iobase, BANK0); switch_bank(iobase, BANK0);
@ -2107,7 +2107,7 @@ static int ali_ircc_is_receiving(struct ali_ircc_cb *self)
spin_unlock_irqrestore(&self->lock, flags); spin_unlock_irqrestore(&self->lock, flags);
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
return status; return status;
} }
@ -2116,9 +2116,9 @@ static struct net_device_stats *ali_ircc_net_get_stats(struct net_device *dev)
{ {
struct ali_ircc_cb *self = (struct ali_ircc_cb *) dev->priv; struct ali_ircc_cb *self = (struct ali_ircc_cb *) dev->priv;
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__ );
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
return &self->stats; return &self->stats;
} }
@ -2164,7 +2164,7 @@ static void SetCOMInterrupts(struct ali_ircc_cb *self , unsigned char enable)
int iobase = self->io.fir_base; /* or sir_base */ int iobase = self->io.fir_base; /* or sir_base */
IRDA_DEBUG(2, "%s(), -------- Start -------- ( Enable = %d )\n", __FUNCTION__ , enable); IRDA_DEBUG(2, "%s(), -------- Start -------- ( Enable = %d )\n", __func__ , enable);
/* Enable the interrupt which we wish to */ /* Enable the interrupt which we wish to */
if (enable){ if (enable){
@ -2205,14 +2205,14 @@ static void SetCOMInterrupts(struct ali_ircc_cb *self , unsigned char enable)
else else
outb(newMask, iobase+UART_IER); outb(newMask, iobase+UART_IER);
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
} }
static void SIR2FIR(int iobase) static void SIR2FIR(int iobase)
{ {
//unsigned char tmp; //unsigned char tmp;
IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __func__ );
/* Already protected (change_speed() or setup()), no need to lock. /* Already protected (change_speed() or setup()), no need to lock.
* Jean II */ * Jean II */
@ -2228,14 +2228,14 @@ static void SIR2FIR(int iobase)
//tmp |= 0x20; //tmp |= 0x20;
//outb(tmp, iobase+FIR_LCR_B); //outb(tmp, iobase+FIR_LCR_B);
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __func__ );
} }
static void FIR2SIR(int iobase) static void FIR2SIR(int iobase)
{ {
unsigned char val; unsigned char val;
IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __func__ );
/* Already protected (change_speed() or setup()), no need to lock. /* Already protected (change_speed() or setup()), no need to lock.
* Jean II */ * Jean II */
@ -2251,7 +2251,7 @@ static void FIR2SIR(int iobase)
val = inb(iobase+UART_LSR); val = inb(iobase+UART_LSR);
val = inb(iobase+UART_MSR); val = inb(iobase+UART_MSR);
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __FUNCTION__ ); IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __func__ );
} }
MODULE_AUTHOR("Benjamin Kong <benjamin_kong@ali.com.tw>"); MODULE_AUTHOR("Benjamin Kong <benjamin_kong@ali.com.tw>");

View file

@ -245,7 +245,7 @@ toshoboe_dumpregs (struct toshoboe_cb *self)
{ {
__u32 ringbase; __u32 ringbase;
IRDA_DEBUG (4, "%s()\n", __FUNCTION__); IRDA_DEBUG (4, "%s()\n", __func__);
ringbase = INB (OBOE_RING_BASE0) << 10; ringbase = INB (OBOE_RING_BASE0) << 10;
ringbase |= INB (OBOE_RING_BASE1) << 18; ringbase |= INB (OBOE_RING_BASE1) << 18;
@ -293,7 +293,7 @@ static void
toshoboe_disablebm (struct toshoboe_cb *self) toshoboe_disablebm (struct toshoboe_cb *self)
{ {
__u8 command; __u8 command;
IRDA_DEBUG (4, "%s()\n", __FUNCTION__); IRDA_DEBUG (4, "%s()\n", __func__);
pci_read_config_byte (self->pdev, PCI_COMMAND, &command); pci_read_config_byte (self->pdev, PCI_COMMAND, &command);
command &= ~PCI_COMMAND_MASTER; command &= ~PCI_COMMAND_MASTER;
@ -305,7 +305,7 @@ toshoboe_disablebm (struct toshoboe_cb *self)
static void static void
toshoboe_stopchip (struct toshoboe_cb *self) toshoboe_stopchip (struct toshoboe_cb *self)
{ {
IRDA_DEBUG (4, "%s()\n", __FUNCTION__); IRDA_DEBUG (4, "%s()\n", __func__);
/*Disable interrupts */ /*Disable interrupts */
OUTB (0x0, OBOE_IER); OUTB (0x0, OBOE_IER);
@ -350,7 +350,7 @@ toshoboe_setbaud (struct toshoboe_cb *self)
__u16 pconfig = 0; __u16 pconfig = 0;
__u8 config0l = 0; __u8 config0l = 0;
IRDA_DEBUG (2, "%s(%d/%d)\n", __FUNCTION__, self->speed, self->io.speed); IRDA_DEBUG (2, "%s(%d/%d)\n", __func__, self->speed, self->io.speed);
switch (self->speed) switch (self->speed)
{ {
@ -482,7 +482,7 @@ toshoboe_setbaud (struct toshoboe_cb *self)
static void static void
toshoboe_enablebm (struct toshoboe_cb *self) toshoboe_enablebm (struct toshoboe_cb *self)
{ {
IRDA_DEBUG (4, "%s()\n", __FUNCTION__); IRDA_DEBUG (4, "%s()\n", __func__);
pci_set_master (self->pdev); pci_set_master (self->pdev);
} }
@ -492,7 +492,7 @@ toshoboe_initring (struct toshoboe_cb *self)
{ {
int i; int i;
IRDA_DEBUG (4, "%s()\n", __FUNCTION__); IRDA_DEBUG (4, "%s()\n", __func__);
for (i = 0; i < TX_SLOTS; ++i) for (i = 0; i < TX_SLOTS; ++i)
{ {
@ -550,7 +550,7 @@ toshoboe_startchip (struct toshoboe_cb *self)
{ {
__u32 physaddr; __u32 physaddr;
IRDA_DEBUG (4, "%s()\n", __FUNCTION__); IRDA_DEBUG (4, "%s()\n", __func__);
toshoboe_initring (self); toshoboe_initring (self);
toshoboe_enablebm (self); toshoboe_enablebm (self);
@ -824,7 +824,7 @@ toshoboe_probe (struct toshoboe_cb *self)
#endif #endif
unsigned long flags; unsigned long flags;
IRDA_DEBUG (4, "%s()\n", __FUNCTION__); IRDA_DEBUG (4, "%s()\n", __func__);
if (request_irq (self->io.irq, toshoboe_probeinterrupt, if (request_irq (self->io.irq, toshoboe_probeinterrupt,
self->io.irqflags, "toshoboe", (void *) self)) self->io.irqflags, "toshoboe", (void *) self))
@ -983,10 +983,10 @@ toshoboe_hard_xmit (struct sk_buff *skb, struct net_device *dev)
IRDA_ASSERT (self != NULL, return 0; ); IRDA_ASSERT (self != NULL, return 0; );
IRDA_DEBUG (1, "%s.tx:%x(%x)%x\n", __FUNCTION__ IRDA_DEBUG (1, "%s.tx:%x(%x)%x\n", __func__
,skb->len,self->txpending,INB (OBOE_ENABLEH)); ,skb->len,self->txpending,INB (OBOE_ENABLEH));
if (!cb->magic) { if (!cb->magic) {
IRDA_DEBUG (2, "%s.Not IrLAP:%x\n", __FUNCTION__, cb->magic); IRDA_DEBUG (2, "%s.Not IrLAP:%x\n", __func__, cb->magic);
#ifdef DUMP_PACKETS #ifdef DUMP_PACKETS
_dumpbufs(skb->data,skb->len,'>'); _dumpbufs(skb->data,skb->len,'>');
#endif #endif
@ -1015,7 +1015,7 @@ toshoboe_hard_xmit (struct sk_buff *skb, struct net_device *dev)
{ {
self->new_speed = speed; self->new_speed = speed;
IRDA_DEBUG (1, "%s: Queued TxDone scheduled speed change %d\n" , IRDA_DEBUG (1, "%s: Queued TxDone scheduled speed change %d\n" ,
__FUNCTION__, speed); __func__, speed);
/* if no data, that's all! */ /* if no data, that's all! */
if (!skb->len) if (!skb->len)
{ {
@ -1057,7 +1057,7 @@ toshoboe_hard_xmit (struct sk_buff *skb, struct net_device *dev)
/* which we will add a wrong checksum to */ /* which we will add a wrong checksum to */
mtt = toshoboe_makemttpacket (self, self->tx_bufs[self->txs], mtt); mtt = toshoboe_makemttpacket (self, self->tx_bufs[self->txs], mtt);
IRDA_DEBUG (1, "%s.mtt:%x(%x)%d\n", __FUNCTION__ IRDA_DEBUG (1, "%s.mtt:%x(%x)%d\n", __func__
,skb->len,mtt,self->txpending); ,skb->len,mtt,self->txpending);
if (mtt) if (mtt)
{ {
@ -1101,7 +1101,7 @@ dumpbufs(skb->data,skb->len,'>');
if (self->ring->tx[self->txs].control & OBOE_CTL_TX_HW_OWNS) if (self->ring->tx[self->txs].control & OBOE_CTL_TX_HW_OWNS)
{ {
IRDA_DEBUG (0, "%s.ful:%x(%x)%x\n", __FUNCTION__ IRDA_DEBUG (0, "%s.ful:%x(%x)%x\n", __func__
,skb->len, self->ring->tx[self->txs].control, self->txpending); ,skb->len, self->ring->tx[self->txs].control, self->txpending);
toshoboe_start_DMA(self, OBOE_CONFIG0H_ENTX); toshoboe_start_DMA(self, OBOE_CONFIG0H_ENTX);
spin_unlock_irqrestore(&self->spinlock, flags); spin_unlock_irqrestore(&self->spinlock, flags);
@ -1179,7 +1179,7 @@ toshoboe_interrupt (int irq, void *dev_id)
if (self->ring->tx[i].control & OBOE_CTL_TX_HW_OWNS) if (self->ring->tx[i].control & OBOE_CTL_TX_HW_OWNS)
self->txpending++; self->txpending++;
} }
IRDA_DEBUG (1, "%s.txd(%x)%x/%x\n", __FUNCTION__ IRDA_DEBUG (1, "%s.txd(%x)%x/%x\n", __func__
,irqstat,txp,self->txpending); ,irqstat,txp,self->txpending);
txp = INB (OBOE_TXSLOT) & OBOE_SLOT_MASK; txp = INB (OBOE_TXSLOT) & OBOE_SLOT_MASK;
@ -1209,7 +1209,7 @@ toshoboe_interrupt (int irq, void *dev_id)
{ {
self->speed = self->new_speed; self->speed = self->new_speed;
IRDA_DEBUG (1, "%s: Executed TxDone scheduled speed change %d\n", IRDA_DEBUG (1, "%s: Executed TxDone scheduled speed change %d\n",
__FUNCTION__, self->speed); __func__, self->speed);
toshoboe_setbaud (self); toshoboe_setbaud (self);
} }
@ -1224,7 +1224,7 @@ toshoboe_interrupt (int irq, void *dev_id)
{ {
int len = self->ring->rx[self->rxs].len; int len = self->ring->rx[self->rxs].len;
skb = NULL; skb = NULL;
IRDA_DEBUG (3, "%s.rcv:%x(%x)\n", __FUNCTION__ IRDA_DEBUG (3, "%s.rcv:%x(%x)\n", __func__
,len,self->ring->rx[self->rxs].control); ,len,self->ring->rx[self->rxs].control);
#ifdef DUMP_PACKETS #ifdef DUMP_PACKETS
@ -1246,7 +1246,7 @@ dumpbufs(self->rx_bufs[self->rxs],len,'<');
len -= 2; len -= 2;
else else
len = 0; len = 0;
IRDA_DEBUG (1, "%s.SIR:%x(%x)\n", __FUNCTION__, len,enable); IRDA_DEBUG (1, "%s.SIR:%x(%x)\n", __func__, len,enable);
} }
#ifdef USE_MIR #ifdef USE_MIR
@ -1256,7 +1256,7 @@ dumpbufs(self->rx_bufs[self->rxs],len,'<');
len -= 2; len -= 2;
else else
len = 0; len = 0;
IRDA_DEBUG (2, "%s.MIR:%x(%x)\n", __FUNCTION__, len,enable); IRDA_DEBUG (2, "%s.MIR:%x(%x)\n", __func__, len,enable);
} }
#endif #endif
else if (enable & OBOE_ENABLEH_FIRON) else if (enable & OBOE_ENABLEH_FIRON)
@ -1265,10 +1265,10 @@ dumpbufs(self->rx_bufs[self->rxs],len,'<');
len -= 4; /*FIXME: check this */ len -= 4; /*FIXME: check this */
else else
len = 0; len = 0;
IRDA_DEBUG (1, "%s.FIR:%x(%x)\n", __FUNCTION__, len,enable); IRDA_DEBUG (1, "%s.FIR:%x(%x)\n", __func__, len,enable);
} }
else else
IRDA_DEBUG (0, "%s.?IR:%x(%x)\n", __FUNCTION__, len,enable); IRDA_DEBUG (0, "%s.?IR:%x(%x)\n", __func__, len,enable);
if (len) if (len)
{ {
@ -1289,7 +1289,7 @@ dumpbufs(self->rx_bufs[self->rxs],len,'<');
{ {
printk (KERN_INFO printk (KERN_INFO
"%s(), memory squeeze, dropping frame.\n", "%s(), memory squeeze, dropping frame.\n",
__FUNCTION__); __func__);
} }
} }
} }
@ -1301,7 +1301,7 @@ dumpbufs(self->rx_bufs[self->rxs],len,'<');
/* (SIR) data is splitted in several slots. */ /* (SIR) data is splitted in several slots. */
/* we have to join all the received buffers received */ /* we have to join all the received buffers received */
/*in a large buffer before checking CRC. */ /*in a large buffer before checking CRC. */
IRDA_DEBUG (0, "%s.err:%x(%x)\n", __FUNCTION__ IRDA_DEBUG (0, "%s.err:%x(%x)\n", __func__
,len,self->ring->rx[self->rxs].control); ,len,self->ring->rx[self->rxs].control);
} }
@ -1329,7 +1329,7 @@ dumpbufs(self->rx_bufs[self->rxs],len,'<');
if (irqstat & OBOE_INT_SIP) if (irqstat & OBOE_INT_SIP)
{ {
self->int_sip++; self->int_sip++;
IRDA_DEBUG (1, "%s.sip:%x(%x)%x\n", __FUNCTION__ IRDA_DEBUG (1, "%s.sip:%x(%x)%x\n", __func__
,self->int_sip,irqstat,self->txpending); ,self->int_sip,irqstat,self->txpending);
} }
return IRQ_HANDLED; return IRQ_HANDLED;
@ -1343,7 +1343,7 @@ toshoboe_net_open (struct net_device *dev)
unsigned long flags; unsigned long flags;
int rc; int rc;
IRDA_DEBUG (4, "%s()\n", __FUNCTION__); IRDA_DEBUG (4, "%s()\n", __func__);
self = netdev_priv(dev); self = netdev_priv(dev);
@ -1381,7 +1381,7 @@ toshoboe_net_close (struct net_device *dev)
{ {
struct toshoboe_cb *self; struct toshoboe_cb *self;
IRDA_DEBUG (4, "%s()\n", __FUNCTION__); IRDA_DEBUG (4, "%s()\n", __func__);
IRDA_ASSERT (dev != NULL, return -1; ); IRDA_ASSERT (dev != NULL, return -1; );
self = (struct toshoboe_cb *) dev->priv; self = (struct toshoboe_cb *) dev->priv;
@ -1426,7 +1426,7 @@ toshoboe_net_ioctl (struct net_device *dev, struct ifreq *rq, int cmd)
IRDA_ASSERT (self != NULL, return -1; ); IRDA_ASSERT (self != NULL, return -1; );
IRDA_DEBUG (5, "%s(), %s, (cmd=0x%X)\n", __FUNCTION__, dev->name, cmd); IRDA_DEBUG (5, "%s(), %s, (cmd=0x%X)\n", __func__, dev->name, cmd);
/* Disable interrupts & save flags */ /* Disable interrupts & save flags */
spin_lock_irqsave(&self->spinlock, flags); spin_lock_irqsave(&self->spinlock, flags);
@ -1438,7 +1438,7 @@ toshoboe_net_ioctl (struct net_device *dev, struct ifreq *rq, int cmd)
* speed, so we still must allow for speed change within * speed, so we still must allow for speed change within
* interrupt context. * interrupt context.
*/ */
IRDA_DEBUG (1, "%s(BANDWIDTH), %s, (%X/%ld\n", __FUNCTION__ IRDA_DEBUG (1, "%s(BANDWIDTH), %s, (%X/%ld\n", __func__
,dev->name, INB (OBOE_STATUS), irq->ifr_baudrate ); ,dev->name, INB (OBOE_STATUS), irq->ifr_baudrate );
if (!in_interrupt () && !capable (CAP_NET_ADMIN)) { if (!in_interrupt () && !capable (CAP_NET_ADMIN)) {
ret = -EPERM; ret = -EPERM;
@ -1451,7 +1451,7 @@ toshoboe_net_ioctl (struct net_device *dev, struct ifreq *rq, int cmd)
self->new_speed = irq->ifr_baudrate; self->new_speed = irq->ifr_baudrate;
break; break;
case SIOCSMEDIABUSY: /* Set media busy */ case SIOCSMEDIABUSY: /* Set media busy */
IRDA_DEBUG (1, "%s(MEDIABUSY), %s, (%X/%x)\n", __FUNCTION__ IRDA_DEBUG (1, "%s(MEDIABUSY), %s, (%X/%x)\n", __func__
,dev->name, INB (OBOE_STATUS), capable (CAP_NET_ADMIN) ); ,dev->name, INB (OBOE_STATUS), capable (CAP_NET_ADMIN) );
if (!capable (CAP_NET_ADMIN)) { if (!capable (CAP_NET_ADMIN)) {
ret = -EPERM; ret = -EPERM;
@ -1461,11 +1461,11 @@ toshoboe_net_ioctl (struct net_device *dev, struct ifreq *rq, int cmd)
break; break;
case SIOCGRECEIVING: /* Check if we are receiving right now */ case SIOCGRECEIVING: /* Check if we are receiving right now */
irq->ifr_receiving = (INB (OBOE_STATUS) & OBOE_STATUS_RXBUSY) ? 1 : 0; irq->ifr_receiving = (INB (OBOE_STATUS) & OBOE_STATUS_RXBUSY) ? 1 : 0;
IRDA_DEBUG (3, "%s(RECEIVING), %s, (%X/%x)\n", __FUNCTION__ IRDA_DEBUG (3, "%s(RECEIVING), %s, (%X/%x)\n", __func__
,dev->name, INB (OBOE_STATUS), irq->ifr_receiving ); ,dev->name, INB (OBOE_STATUS), irq->ifr_receiving );
break; break;
default: default:
IRDA_DEBUG (1, "%s(?), %s, (cmd=0x%X)\n", __FUNCTION__, dev->name, cmd); IRDA_DEBUG (1, "%s(?), %s, (cmd=0x%X)\n", __func__, dev->name, cmd);
ret = -EOPNOTSUPP; ret = -EOPNOTSUPP;
} }
out: out:
@ -1492,7 +1492,7 @@ toshoboe_close (struct pci_dev *pci_dev)
int i; int i;
struct toshoboe_cb *self = (struct toshoboe_cb*)pci_get_drvdata(pci_dev); struct toshoboe_cb *self = (struct toshoboe_cb*)pci_get_drvdata(pci_dev);
IRDA_DEBUG (4, "%s()\n", __FUNCTION__); IRDA_DEBUG (4, "%s()\n", __func__);
IRDA_ASSERT (self != NULL, return; ); IRDA_ASSERT (self != NULL, return; );
@ -1533,7 +1533,7 @@ toshoboe_open (struct pci_dev *pci_dev, const struct pci_device_id *pdid)
int ok = 0; int ok = 0;
int err; int err;
IRDA_DEBUG (4, "%s()\n", __FUNCTION__); IRDA_DEBUG (4, "%s()\n", __func__);
if ((err=pci_enable_device(pci_dev))) if ((err=pci_enable_device(pci_dev)))
return err; return err;
@ -1700,7 +1700,7 @@ toshoboe_gotosleep (struct pci_dev *pci_dev, pm_message_t crap)
unsigned long flags; unsigned long flags;
int i = 10; int i = 10;
IRDA_DEBUG (4, "%s()\n", __FUNCTION__); IRDA_DEBUG (4, "%s()\n", __func__);
if (!self || self->stopped) if (!self || self->stopped)
return 0; return 0;
@ -1728,7 +1728,7 @@ toshoboe_wakeup (struct pci_dev *pci_dev)
struct toshoboe_cb *self = (struct toshoboe_cb*)pci_get_drvdata(pci_dev); struct toshoboe_cb *self = (struct toshoboe_cb*)pci_get_drvdata(pci_dev);
unsigned long flags; unsigned long flags;
IRDA_DEBUG (4, "%s()\n", __FUNCTION__); IRDA_DEBUG (4, "%s()\n", __func__);
if (!self || !self->stopped) if (!self || !self->stopped)
return 0; return 0;

View file

@ -86,7 +86,7 @@ static int girbil_open(struct sir_dev *dev)
{ {
struct qos_info *qos = &dev->qos; struct qos_info *qos = &dev->qos;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* Power on dongle */ /* Power on dongle */
sirdev_set_dtr_rts(dev, TRUE, TRUE); sirdev_set_dtr_rts(dev, TRUE, TRUE);
@ -102,7 +102,7 @@ static int girbil_open(struct sir_dev *dev)
static int girbil_close(struct sir_dev *dev) static int girbil_close(struct sir_dev *dev)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* Power off dongle */ /* Power off dongle */
sirdev_set_dtr_rts(dev, FALSE, FALSE); sirdev_set_dtr_rts(dev, FALSE, FALSE);
@ -126,7 +126,7 @@ static int girbil_change_speed(struct sir_dev *dev, unsigned speed)
u8 control[2]; u8 control[2];
static int ret = 0; static int ret = 0;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* dongle alread reset - port and dongle at default speed */ /* dongle alread reset - port and dongle at default speed */
@ -179,7 +179,7 @@ static int girbil_change_speed(struct sir_dev *dev, unsigned speed)
break; break;
default: default:
IRDA_ERROR("%s - undefined state %d\n", __FUNCTION__, state); IRDA_ERROR("%s - undefined state %d\n", __func__, state);
ret = -EINVAL; ret = -EINVAL;
break; break;
} }
@ -209,7 +209,7 @@ static int girbil_reset(struct sir_dev *dev)
u8 control = GIRBIL_TXEN | GIRBIL_RXEN; u8 control = GIRBIL_TXEN | GIRBIL_RXEN;
int ret = 0; int ret = 0;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
switch (state) { switch (state) {
case SIRDEV_STATE_DONGLE_RESET: case SIRDEV_STATE_DONGLE_RESET:
@ -241,7 +241,7 @@ static int girbil_reset(struct sir_dev *dev)
break; break;
default: default:
IRDA_ERROR("%s(), undefined state %d\n", __FUNCTION__, state); IRDA_ERROR("%s(), undefined state %d\n", __func__, state);
ret = -1; ret = -1;
break; break;
} }

View file

@ -177,12 +177,12 @@ static void irda_usb_build_header(struct irda_usb_cb *self,
(!force) && (self->speed != -1)) { (!force) && (self->speed != -1)) {
/* No speed and xbofs change here /* No speed and xbofs change here
* (we'll do it later in the write callback) */ * (we'll do it later in the write callback) */
IRDA_DEBUG(2, "%s(), not changing speed yet\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), not changing speed yet\n", __func__);
*header = 0; *header = 0;
return; return;
} }
IRDA_DEBUG(2, "%s(), changing speed to %d\n", __FUNCTION__, self->new_speed); IRDA_DEBUG(2, "%s(), changing speed to %d\n", __func__, self->new_speed);
self->speed = self->new_speed; self->speed = self->new_speed;
/* We will do ` self->new_speed = -1; ' in the completion /* We will do ` self->new_speed = -1; ' in the completion
* handler just in case the current URB fail - Jean II */ * handler just in case the current URB fail - Jean II */
@ -228,7 +228,7 @@ static void irda_usb_build_header(struct irda_usb_cb *self,
/* Set the negotiated additional XBOFS */ /* Set the negotiated additional XBOFS */
if (self->new_xbofs != -1) { if (self->new_xbofs != -1) {
IRDA_DEBUG(2, "%s(), changing xbofs to %d\n", __FUNCTION__, self->new_xbofs); IRDA_DEBUG(2, "%s(), changing xbofs to %d\n", __func__, self->new_xbofs);
self->xbofs = self->new_xbofs; self->xbofs = self->new_xbofs;
/* We will do ` self->new_xbofs = -1; ' in the completion /* We will do ` self->new_xbofs = -1; ' in the completion
* handler just in case the current URB fail - Jean II */ * handler just in case the current URB fail - Jean II */
@ -302,13 +302,13 @@ static void irda_usb_change_speed_xbofs(struct irda_usb_cb *self)
struct urb *urb; struct urb *urb;
int ret; int ret;
IRDA_DEBUG(2, "%s(), speed=%d, xbofs=%d\n", __FUNCTION__, IRDA_DEBUG(2, "%s(), speed=%d, xbofs=%d\n", __func__,
self->new_speed, self->new_xbofs); self->new_speed, self->new_xbofs);
/* Grab the speed URB */ /* Grab the speed URB */
urb = self->speed_urb; urb = self->speed_urb;
if (urb->status != 0) { if (urb->status != 0) {
IRDA_WARNING("%s(), URB still in use!\n", __FUNCTION__); IRDA_WARNING("%s(), URB still in use!\n", __func__);
return; return;
} }
@ -334,7 +334,7 @@ static void irda_usb_change_speed_xbofs(struct irda_usb_cb *self)
/* Irq disabled -> GFP_ATOMIC */ /* Irq disabled -> GFP_ATOMIC */
if ((ret = usb_submit_urb(urb, GFP_ATOMIC))) { if ((ret = usb_submit_urb(urb, GFP_ATOMIC))) {
IRDA_WARNING("%s(), failed Speed URB\n", __FUNCTION__); IRDA_WARNING("%s(), failed Speed URB\n", __func__);
} }
} }
@ -347,7 +347,7 @@ static void speed_bulk_callback(struct urb *urb)
{ {
struct irda_usb_cb *self = urb->context; struct irda_usb_cb *self = urb->context;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* We should always have a context */ /* We should always have a context */
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
@ -357,7 +357,7 @@ static void speed_bulk_callback(struct urb *urb)
/* Check for timeout and other USB nasties */ /* Check for timeout and other USB nasties */
if (urb->status != 0) { if (urb->status != 0) {
/* I get a lot of -ECONNABORTED = -103 here - Jean II */ /* I get a lot of -ECONNABORTED = -103 here - Jean II */
IRDA_DEBUG(0, "%s(), URB complete status %d, transfer_flags 0x%04X\n", __FUNCTION__, urb->status, urb->transfer_flags); IRDA_DEBUG(0, "%s(), URB complete status %d, transfer_flags 0x%04X\n", __func__, urb->status, urb->transfer_flags);
/* Don't do anything here, that might confuse the USB layer. /* Don't do anything here, that might confuse the USB layer.
* Instead, we will wait for irda_usb_net_timeout(), the * Instead, we will wait for irda_usb_net_timeout(), the
@ -392,7 +392,7 @@ static int irda_usb_hard_xmit(struct sk_buff *skb, struct net_device *netdev)
int res, mtt; int res, mtt;
int err = 1; /* Failed */ int err = 1; /* Failed */
IRDA_DEBUG(4, "%s() on %s\n", __FUNCTION__, netdev->name); IRDA_DEBUG(4, "%s() on %s\n", __func__, netdev->name);
netif_stop_queue(netdev); netif_stop_queue(netdev);
@ -403,7 +403,7 @@ static int irda_usb_hard_xmit(struct sk_buff *skb, struct net_device *netdev)
* We need to check self->present under the spinlock because * We need to check self->present under the spinlock because
* of irda_usb_disconnect() is synchronous - Jean II */ * of irda_usb_disconnect() is synchronous - Jean II */
if (!self->present) { if (!self->present) {
IRDA_DEBUG(0, "%s(), Device is gone...\n", __FUNCTION__); IRDA_DEBUG(0, "%s(), Device is gone...\n", __func__);
goto drop; goto drop;
} }
@ -437,7 +437,7 @@ static int irda_usb_hard_xmit(struct sk_buff *skb, struct net_device *netdev)
} }
if (urb->status != 0) { if (urb->status != 0) {
IRDA_WARNING("%s(), URB still in use!\n", __FUNCTION__); IRDA_WARNING("%s(), URB still in use!\n", __func__);
goto drop; goto drop;
} }
@ -524,7 +524,7 @@ static int irda_usb_hard_xmit(struct sk_buff *skb, struct net_device *netdev)
/* Ask USB to send the packet - Irq disabled -> GFP_ATOMIC */ /* Ask USB to send the packet - Irq disabled -> GFP_ATOMIC */
if ((res = usb_submit_urb(urb, GFP_ATOMIC))) { if ((res = usb_submit_urb(urb, GFP_ATOMIC))) {
IRDA_WARNING("%s(), failed Tx URB\n", __FUNCTION__); IRDA_WARNING("%s(), failed Tx URB\n", __func__);
self->stats.tx_errors++; self->stats.tx_errors++;
/* Let USB recover : We will catch that in the watchdog */ /* Let USB recover : We will catch that in the watchdog */
/*netif_start_queue(netdev);*/ /*netif_start_queue(netdev);*/
@ -556,7 +556,7 @@ static void write_bulk_callback(struct urb *urb)
struct sk_buff *skb = urb->context; struct sk_buff *skb = urb->context;
struct irda_usb_cb *self = ((struct irda_skb_cb *) skb->cb)->context; struct irda_usb_cb *self = ((struct irda_skb_cb *) skb->cb)->context;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* We should always have a context */ /* We should always have a context */
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
@ -570,7 +570,7 @@ static void write_bulk_callback(struct urb *urb)
/* Check for timeout and other USB nasties */ /* Check for timeout and other USB nasties */
if (urb->status != 0) { if (urb->status != 0) {
/* I get a lot of -ECONNABORTED = -103 here - Jean II */ /* I get a lot of -ECONNABORTED = -103 here - Jean II */
IRDA_DEBUG(0, "%s(), URB complete status %d, transfer_flags 0x%04X\n", __FUNCTION__, urb->status, urb->transfer_flags); IRDA_DEBUG(0, "%s(), URB complete status %d, transfer_flags 0x%04X\n", __func__, urb->status, urb->transfer_flags);
/* Don't do anything here, that might confuse the USB layer, /* Don't do anything here, that might confuse the USB layer,
* and we could go in recursion and blow the kernel stack... * and we could go in recursion and blow the kernel stack...
@ -589,7 +589,7 @@ static void write_bulk_callback(struct urb *urb)
/* If the network is closed, stop everything */ /* If the network is closed, stop everything */
if ((!self->netopen) || (!self->present)) { if ((!self->netopen) || (!self->present)) {
IRDA_DEBUG(0, "%s(), Network is gone...\n", __FUNCTION__); IRDA_DEBUG(0, "%s(), Network is gone...\n", __func__);
spin_unlock_irqrestore(&self->lock, flags); spin_unlock_irqrestore(&self->lock, flags);
return; return;
} }
@ -600,7 +600,7 @@ static void write_bulk_callback(struct urb *urb)
(self->new_xbofs != self->xbofs)) { (self->new_xbofs != self->xbofs)) {
/* We haven't changed speed yet (because of /* We haven't changed speed yet (because of
* IUC_SPEED_BUG), so do it now - Jean II */ * IUC_SPEED_BUG), so do it now - Jean II */
IRDA_DEBUG(1, "%s(), Changing speed now...\n", __FUNCTION__); IRDA_DEBUG(1, "%s(), Changing speed now...\n", __func__);
irda_usb_change_speed_xbofs(self); irda_usb_change_speed_xbofs(self);
} else { } else {
/* New speed and xbof is now commited in hardware */ /* New speed and xbof is now commited in hardware */
@ -632,7 +632,7 @@ static void irda_usb_net_timeout(struct net_device *netdev)
struct urb *urb; struct urb *urb;
int done = 0; /* If we have made any progress */ int done = 0; /* If we have made any progress */
IRDA_DEBUG(0, "%s(), Network layer thinks we timed out!\n", __FUNCTION__); IRDA_DEBUG(0, "%s(), Network layer thinks we timed out!\n", __func__);
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
/* Protect us from USB callbacks, net Tx and else. */ /* Protect us from USB callbacks, net Tx and else. */
@ -640,7 +640,7 @@ static void irda_usb_net_timeout(struct net_device *netdev)
/* self->present *MUST* be read under spinlock */ /* self->present *MUST* be read under spinlock */
if (!self->present) { if (!self->present) {
IRDA_WARNING("%s(), device not present!\n", __FUNCTION__); IRDA_WARNING("%s(), device not present!\n", __func__);
netif_stop_queue(netdev); netif_stop_queue(netdev);
spin_unlock_irqrestore(&self->lock, flags); spin_unlock_irqrestore(&self->lock, flags);
return; return;
@ -763,7 +763,7 @@ static void irda_usb_submit(struct irda_usb_cb *self, struct sk_buff *skb, struc
struct irda_skb_cb *cb; struct irda_skb_cb *cb;
int ret; int ret;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* This should never happen */ /* This should never happen */
IRDA_ASSERT(skb != NULL, return;); IRDA_ASSERT(skb != NULL, return;);
@ -786,7 +786,7 @@ static void irda_usb_submit(struct irda_usb_cb *self, struct sk_buff *skb, struc
/* If this ever happen, we are in deep s***. /* If this ever happen, we are in deep s***.
* Basically, the Rx path will stop... */ * Basically, the Rx path will stop... */
IRDA_WARNING("%s(), Failed to submit Rx URB %d\n", IRDA_WARNING("%s(), Failed to submit Rx URB %d\n",
__FUNCTION__, ret); __func__, ret);
} }
} }
@ -807,7 +807,7 @@ static void irda_usb_receive(struct urb *urb)
struct urb *next_urb; struct urb *next_urb;
unsigned int len, docopy; unsigned int len, docopy;
IRDA_DEBUG(2, "%s(), len=%d\n", __FUNCTION__, urb->actual_length); IRDA_DEBUG(2, "%s(), len=%d\n", __func__, urb->actual_length);
/* Find ourselves */ /* Find ourselves */
cb = (struct irda_skb_cb *) skb->cb; cb = (struct irda_skb_cb *) skb->cb;
@ -817,7 +817,7 @@ static void irda_usb_receive(struct urb *urb)
/* If the network is closed or the device gone, stop everything */ /* If the network is closed or the device gone, stop everything */
if ((!self->netopen) || (!self->present)) { if ((!self->netopen) || (!self->present)) {
IRDA_DEBUG(0, "%s(), Network is gone!\n", __FUNCTION__); IRDA_DEBUG(0, "%s(), Network is gone!\n", __func__);
/* Don't re-submit the URB : will stall the Rx path */ /* Don't re-submit the URB : will stall the Rx path */
return; return;
} }
@ -840,7 +840,7 @@ static void irda_usb_receive(struct urb *urb)
/* Usually precursor to a hot-unplug on OHCI. */ /* Usually precursor to a hot-unplug on OHCI. */
default: default:
self->stats.rx_errors++; self->stats.rx_errors++;
IRDA_DEBUG(0, "%s(), RX status %d, transfer_flags 0x%04X \n", __FUNCTION__, urb->status, urb->transfer_flags); IRDA_DEBUG(0, "%s(), RX status %d, transfer_flags 0x%04X \n", __func__, urb->status, urb->transfer_flags);
break; break;
} }
/* If we received an error, we don't want to resubmit the /* If we received an error, we don't want to resubmit the
@ -861,7 +861,7 @@ static void irda_usb_receive(struct urb *urb)
/* Check for empty frames */ /* Check for empty frames */
if (urb->actual_length <= self->header_length) { if (urb->actual_length <= self->header_length) {
IRDA_WARNING("%s(), empty frame!\n", __FUNCTION__); IRDA_WARNING("%s(), empty frame!\n", __func__);
goto done; goto done;
} }
@ -967,7 +967,7 @@ static void irda_usb_rx_defer_expired(unsigned long data)
struct irda_skb_cb *cb; struct irda_skb_cb *cb;
struct urb *next_urb; struct urb *next_urb;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* Find ourselves */ /* Find ourselves */
cb = (struct irda_skb_cb *) skb->cb; cb = (struct irda_skb_cb *) skb->cb;
@ -1053,7 +1053,7 @@ static int stir421x_fw_upload(struct irda_usb_cb *self,
patch_block, block_size, patch_block, block_size,
&actual_len, msecs_to_jiffies(500)); &actual_len, msecs_to_jiffies(500));
IRDA_DEBUG(3,"%s(): Bulk send %u bytes, ret=%d\n", IRDA_DEBUG(3,"%s(): Bulk send %u bytes, ret=%d\n",
__FUNCTION__, actual_len, ret); __func__, actual_len, ret);
if (ret < 0) if (ret < 0)
break; break;
@ -1092,7 +1092,7 @@ static int stir421x_patch_device(struct irda_usb_cb *self)
/* We get a patch from userspace */ /* We get a patch from userspace */
IRDA_MESSAGE("%s(): Received firmware %s (%zu bytes)\n", IRDA_MESSAGE("%s(): Received firmware %s (%zu bytes)\n",
__FUNCTION__, stir421x_fw_name, fw->size); __func__, stir421x_fw_name, fw->size);
ret = -EINVAL; ret = -EINVAL;
@ -1116,7 +1116,7 @@ static int stir421x_patch_device(struct irda_usb_cb *self)
+ (build % 10); + (build % 10);
IRDA_DEBUG(3, "%s(): Firmware Product version %ld\n", IRDA_DEBUG(3, "%s(): Firmware Product version %ld\n",
__FUNCTION__, fw_version); __func__, fw_version);
} }
} }
@ -1172,7 +1172,7 @@ static int irda_usb_net_open(struct net_device *netdev)
char hwname[16]; char hwname[16];
int i; int i;
IRDA_DEBUG(1, "%s()\n", __FUNCTION__); IRDA_DEBUG(1, "%s()\n", __func__);
IRDA_ASSERT(netdev != NULL, return -1;); IRDA_ASSERT(netdev != NULL, return -1;);
self = (struct irda_usb_cb *) netdev->priv; self = (struct irda_usb_cb *) netdev->priv;
@ -1182,13 +1182,13 @@ static int irda_usb_net_open(struct net_device *netdev)
/* Can only open the device if it's there */ /* Can only open the device if it's there */
if(!self->present) { if(!self->present) {
spin_unlock_irqrestore(&self->lock, flags); spin_unlock_irqrestore(&self->lock, flags);
IRDA_WARNING("%s(), device not present!\n", __FUNCTION__); IRDA_WARNING("%s(), device not present!\n", __func__);
return -1; return -1;
} }
if(self->needspatch) { if(self->needspatch) {
spin_unlock_irqrestore(&self->lock, flags); spin_unlock_irqrestore(&self->lock, flags);
IRDA_WARNING("%s(), device needs patch\n", __FUNCTION__) ; IRDA_WARNING("%s(), device needs patch\n", __func__) ;
return -EIO ; return -EIO ;
} }
@ -1231,7 +1231,7 @@ static int irda_usb_net_open(struct net_device *netdev)
/* If this ever happen, we are in deep s***. /* If this ever happen, we are in deep s***.
* Basically, we can't start the Rx path... */ * Basically, we can't start the Rx path... */
IRDA_WARNING("%s(), Failed to allocate Rx skb\n", IRDA_WARNING("%s(), Failed to allocate Rx skb\n",
__FUNCTION__); __func__);
return -1; return -1;
} }
//skb_reserve(newskb, USB_IRDA_HEADER - 1); //skb_reserve(newskb, USB_IRDA_HEADER - 1);
@ -1254,7 +1254,7 @@ static int irda_usb_net_close(struct net_device *netdev)
struct irda_usb_cb *self; struct irda_usb_cb *self;
int i; int i;
IRDA_DEBUG(1, "%s()\n", __FUNCTION__); IRDA_DEBUG(1, "%s()\n", __func__);
IRDA_ASSERT(netdev != NULL, return -1;); IRDA_ASSERT(netdev != NULL, return -1;);
self = (struct irda_usb_cb *) netdev->priv; self = (struct irda_usb_cb *) netdev->priv;
@ -1309,7 +1309,7 @@ static int irda_usb_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
self = dev->priv; self = dev->priv;
IRDA_ASSERT(self != NULL, return -1;); IRDA_ASSERT(self != NULL, return -1;);
IRDA_DEBUG(2, "%s(), %s, (cmd=0x%X)\n", __FUNCTION__, dev->name, cmd); IRDA_DEBUG(2, "%s(), %s, (cmd=0x%X)\n", __func__, dev->name, cmd);
switch (cmd) { switch (cmd) {
case SIOCSBANDWIDTH: /* Set bandwidth */ case SIOCSBANDWIDTH: /* Set bandwidth */
@ -1367,7 +1367,7 @@ static inline void irda_usb_init_qos(struct irda_usb_cb *self)
{ {
struct irda_class_desc *desc; struct irda_class_desc *desc;
IRDA_DEBUG(3, "%s()\n", __FUNCTION__); IRDA_DEBUG(3, "%s()\n", __func__);
desc = self->irda_desc; desc = self->irda_desc;
@ -1384,7 +1384,7 @@ static inline void irda_usb_init_qos(struct irda_usb_cb *self)
self->qos.data_size.bits = desc->bmDataSize; self->qos.data_size.bits = desc->bmDataSize;
IRDA_DEBUG(0, "%s(), dongle says speed=0x%X, size=0x%X, window=0x%X, bofs=0x%X, turn=0x%X\n", IRDA_DEBUG(0, "%s(), dongle says speed=0x%X, size=0x%X, window=0x%X, bofs=0x%X, turn=0x%X\n",
__FUNCTION__, self->qos.baud_rate.bits, self->qos.data_size.bits, self->qos.window_size.bits, self->qos.additional_bofs.bits, self->qos.min_turn_time.bits); __func__, self->qos.baud_rate.bits, self->qos.data_size.bits, self->qos.window_size.bits, self->qos.additional_bofs.bits, self->qos.min_turn_time.bits);
/* Don't always trust what the dongle tell us */ /* Don't always trust what the dongle tell us */
if(self->capability & IUC_SIR_ONLY) if(self->capability & IUC_SIR_ONLY)
@ -1419,7 +1419,7 @@ static inline int irda_usb_open(struct irda_usb_cb *self)
{ {
struct net_device *netdev = self->netdev; struct net_device *netdev = self->netdev;
IRDA_DEBUG(1, "%s()\n", __FUNCTION__); IRDA_DEBUG(1, "%s()\n", __func__);
irda_usb_init_qos(self); irda_usb_init_qos(self);
@ -1442,7 +1442,7 @@ static inline int irda_usb_open(struct irda_usb_cb *self)
*/ */
static inline void irda_usb_close(struct irda_usb_cb *self) static inline void irda_usb_close(struct irda_usb_cb *self)
{ {
IRDA_DEBUG(1, "%s()\n", __FUNCTION__); IRDA_DEBUG(1, "%s()\n", __func__);
/* Remove netdevice */ /* Remove netdevice */
unregister_netdev(self->netdev); unregister_netdev(self->netdev);
@ -1515,13 +1515,13 @@ static inline int irda_usb_parse_endpoints(struct irda_usb_cb *self, struct usb_
/* This is our interrupt endpoint */ /* This is our interrupt endpoint */
self->bulk_int_ep = ep; self->bulk_int_ep = ep;
} else { } else {
IRDA_ERROR("%s(), Unrecognised endpoint %02X.\n", __FUNCTION__, ep); IRDA_ERROR("%s(), Unrecognised endpoint %02X.\n", __func__, ep);
} }
} }
} }
IRDA_DEBUG(0, "%s(), And our endpoints are : in=%02X, out=%02X (%d), int=%02X\n", IRDA_DEBUG(0, "%s(), And our endpoints are : in=%02X, out=%02X (%d), int=%02X\n",
__FUNCTION__, self->bulk_in_ep, self->bulk_out_ep, self->bulk_out_mtu, self->bulk_int_ep); __func__, self->bulk_in_ep, self->bulk_out_ep, self->bulk_out_mtu, self->bulk_int_ep);
return((self->bulk_in_ep != 0) && (self->bulk_out_ep != 0)); return((self->bulk_in_ep != 0) && (self->bulk_out_ep != 0));
} }
@ -1583,7 +1583,7 @@ static inline struct irda_class_desc *irda_usb_find_class_desc(struct usb_interf
0, intf->altsetting->desc.bInterfaceNumber, desc, 0, intf->altsetting->desc.bInterfaceNumber, desc,
sizeof(*desc), 500); sizeof(*desc), 500);
IRDA_DEBUG(1, "%s(), ret=%d\n", __FUNCTION__, ret); IRDA_DEBUG(1, "%s(), ret=%d\n", __func__, ret);
if (ret < sizeof(*desc)) { if (ret < sizeof(*desc)) {
IRDA_WARNING("usb-irda: class_descriptor read %s (%d)\n", IRDA_WARNING("usb-irda: class_descriptor read %s (%d)\n",
(ret<0) ? "failed" : "too short", ret); (ret<0) ? "failed" : "too short", ret);
@ -1696,10 +1696,10 @@ static int irda_usb_probe(struct usb_interface *intf,
/* Martin Diehl says if we get a -EPIPE we should /* Martin Diehl says if we get a -EPIPE we should
* be fine and we don't need to do a usb_clear_halt(). * be fine and we don't need to do a usb_clear_halt().
* - Jean II */ * - Jean II */
IRDA_DEBUG(0, "%s(), Received -EPIPE, ignoring...\n", __FUNCTION__); IRDA_DEBUG(0, "%s(), Received -EPIPE, ignoring...\n", __func__);
break; break;
default: default:
IRDA_DEBUG(0, "%s(), Unknown error %d\n", __FUNCTION__, ret); IRDA_DEBUG(0, "%s(), Unknown error %d\n", __func__, ret);
ret = -EIO; ret = -EIO;
goto err_out_3; goto err_out_3;
} }
@ -1708,7 +1708,7 @@ static int irda_usb_probe(struct usb_interface *intf,
interface = intf->cur_altsetting; interface = intf->cur_altsetting;
if(!irda_usb_parse_endpoints(self, interface->endpoint, if(!irda_usb_parse_endpoints(self, interface->endpoint,
interface->desc.bNumEndpoints)) { interface->desc.bNumEndpoints)) {
IRDA_ERROR("%s(), Bogus endpoints...\n", __FUNCTION__); IRDA_ERROR("%s(), Bogus endpoints...\n", __func__);
ret = -EIO; ret = -EIO;
goto err_out_3; goto err_out_3;
} }
@ -1815,7 +1815,7 @@ static void irda_usb_disconnect(struct usb_interface *intf)
struct irda_usb_cb *self = usb_get_intfdata(intf); struct irda_usb_cb *self = usb_get_intfdata(intf);
int i; int i;
IRDA_DEBUG(1, "%s()\n", __FUNCTION__); IRDA_DEBUG(1, "%s()\n", __func__);
usb_set_intfdata(intf, NULL); usb_set_intfdata(intf, NULL);
if (!self) if (!self)
@ -1865,7 +1865,7 @@ static void irda_usb_disconnect(struct usb_interface *intf)
/* Free self and network device */ /* Free self and network device */
free_netdev(self->netdev); free_netdev(self->netdev);
IRDA_DEBUG(0, "%s(), USB IrDA Disconnected\n", __FUNCTION__); IRDA_DEBUG(0, "%s(), USB IrDA Disconnected\n", __func__);
} }
/*------------------------------------------------------------------*/ /*------------------------------------------------------------------*/

View file

@ -231,7 +231,7 @@ static void irtty_receive_buf(struct tty_struct *tty, const unsigned char *cp,
dev = priv->dev; dev = priv->dev;
if (!dev) { if (!dev) {
IRDA_WARNING("%s(), not ready yet!\n", __FUNCTION__); IRDA_WARNING("%s(), not ready yet!\n", __func__);
return; return;
} }
@ -388,7 +388,7 @@ static int irtty_ioctl(struct tty_struct *tty, struct file *file, unsigned int c
IRDA_ASSERT(priv != NULL, return -ENODEV;); IRDA_ASSERT(priv != NULL, return -ENODEV;);
IRDA_ASSERT(priv->magic == IRTTY_MAGIC, return -EBADR;); IRDA_ASSERT(priv->magic == IRTTY_MAGIC, return -EBADR;);
IRDA_DEBUG(3, "%s(cmd=0x%X)\n", __FUNCTION__, cmd); IRDA_DEBUG(3, "%s(cmd=0x%X)\n", __func__, cmd);
dev = priv->dev; dev = priv->dev;
IRDA_ASSERT(dev != NULL, return -1;); IRDA_ASSERT(dev != NULL, return -1;);
@ -476,7 +476,7 @@ static int irtty_open(struct tty_struct *tty)
mutex_unlock(&irtty_mutex); mutex_unlock(&irtty_mutex);
IRDA_DEBUG(0, "%s - %s: irda line discipline opened\n", __FUNCTION__, tty->name); IRDA_DEBUG(0, "%s - %s: irda line discipline opened\n", __func__, tty->name);
return 0; return 0;
@ -528,7 +528,7 @@ static void irtty_close(struct tty_struct *tty)
kfree(priv); kfree(priv);
IRDA_DEBUG(0, "%s - %s: irda line discipline closed\n", __FUNCTION__, tty->name); IRDA_DEBUG(0, "%s - %s: irda line discipline closed\n", __func__, tty->name);
} }
/* ------------------------------------------------------- */ /* ------------------------------------------------------- */
@ -566,7 +566,7 @@ static void __exit irtty_sir_cleanup(void)
if ((err = tty_unregister_ldisc(N_IRDA))) { if ((err = tty_unregister_ldisc(N_IRDA))) {
IRDA_ERROR("%s(), can't unregister line discipline (err = %d)\n", IRDA_ERROR("%s(), can't unregister line discipline (err = %d)\n",
__FUNCTION__, err); __func__, err);
} }
} }

View file

@ -243,7 +243,7 @@ static void kingsun_rcv_irq(struct urb *urb)
} }
} else if (urb->actual_length > 0) { } else if (urb->actual_length > 0) {
err("%s(): Unexpected response length, expected %d got %d", err("%s(): Unexpected response length, expected %d got %d",
__FUNCTION__, kingsun->max_rx, urb->actual_length); __func__, kingsun->max_rx, urb->actual_length);
} }
/* This urb has already been filled in kingsun_net_open */ /* This urb has already been filled in kingsun_net_open */
ret = usb_submit_urb(urb, GFP_ATOMIC); ret = usb_submit_urb(urb, GFP_ATOMIC);

View file

@ -78,7 +78,7 @@ static int litelink_open(struct sir_dev *dev)
{ {
struct qos_info *qos = &dev->qos; struct qos_info *qos = &dev->qos;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* Power up dongle */ /* Power up dongle */
sirdev_set_dtr_rts(dev, TRUE, TRUE); sirdev_set_dtr_rts(dev, TRUE, TRUE);
@ -95,7 +95,7 @@ static int litelink_open(struct sir_dev *dev)
static int litelink_close(struct sir_dev *dev) static int litelink_close(struct sir_dev *dev)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* Power off dongle */ /* Power off dongle */
sirdev_set_dtr_rts(dev, FALSE, FALSE); sirdev_set_dtr_rts(dev, FALSE, FALSE);
@ -113,7 +113,7 @@ static int litelink_change_speed(struct sir_dev *dev, unsigned speed)
{ {
int i; int i;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* dongle already reset by irda-thread - current speed (dongle and /* dongle already reset by irda-thread - current speed (dongle and
* port) is the default speed (115200 for litelink!) * port) is the default speed (115200 for litelink!)
@ -156,7 +156,7 @@ static int litelink_change_speed(struct sir_dev *dev, unsigned speed)
*/ */
static int litelink_reset(struct sir_dev *dev) static int litelink_reset(struct sir_dev *dev)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* probably the power-up can be dropped here, but with only /* probably the power-up can be dropped here, but with only
* 15 usec delay it's not worth the risk unless somebody with * 15 usec delay it's not worth the risk unless somebody with

View file

@ -67,13 +67,13 @@ static struct dongle_driver ma600 = {
static int __init ma600_sir_init(void) static int __init ma600_sir_init(void)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
return irda_register_dongle(&ma600); return irda_register_dongle(&ma600);
} }
static void __exit ma600_sir_cleanup(void) static void __exit ma600_sir_cleanup(void)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
irda_unregister_dongle(&ma600); irda_unregister_dongle(&ma600);
} }
@ -88,7 +88,7 @@ static int ma600_open(struct sir_dev *dev)
{ {
struct qos_info *qos = &dev->qos; struct qos_info *qos = &dev->qos;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
sirdev_set_dtr_rts(dev, TRUE, TRUE); sirdev_set_dtr_rts(dev, TRUE, TRUE);
@ -106,7 +106,7 @@ static int ma600_open(struct sir_dev *dev)
static int ma600_close(struct sir_dev *dev) static int ma600_close(struct sir_dev *dev)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* Power off dongle */ /* Power off dongle */
sirdev_set_dtr_rts(dev, FALSE, FALSE); sirdev_set_dtr_rts(dev, FALSE, FALSE);
@ -176,7 +176,7 @@ static int ma600_change_speed(struct sir_dev *dev, unsigned speed)
{ {
u8 byte; u8 byte;
IRDA_DEBUG(2, "%s(), speed=%d (was %d)\n", __FUNCTION__, IRDA_DEBUG(2, "%s(), speed=%d (was %d)\n", __func__,
speed, dev->speed); speed, dev->speed);
/* dongle already reset, dongle and port at default speed (9600) */ /* dongle already reset, dongle and port at default speed (9600) */
@ -201,12 +201,12 @@ static int ma600_change_speed(struct sir_dev *dev, unsigned speed)
sirdev_raw_read(dev, &byte, sizeof(byte)); sirdev_raw_read(dev, &byte, sizeof(byte));
if (byte != get_control_byte(speed)) { if (byte != get_control_byte(speed)) {
IRDA_WARNING("%s(): bad control byte read-back %02x != %02x\n", IRDA_WARNING("%s(): bad control byte read-back %02x != %02x\n",
__FUNCTION__, (unsigned) byte, __func__, (unsigned) byte,
(unsigned) get_control_byte(speed)); (unsigned) get_control_byte(speed));
return -1; return -1;
} }
else else
IRDA_DEBUG(2, "%s() control byte write read OK\n", __FUNCTION__); IRDA_DEBUG(2, "%s() control byte write read OK\n", __func__);
#endif #endif
/* Set DTR, Set RTS */ /* Set DTR, Set RTS */
@ -238,7 +238,7 @@ static int ma600_change_speed(struct sir_dev *dev, unsigned speed)
int ma600_reset(struct sir_dev *dev) int ma600_reset(struct sir_dev *dev)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* Reset the dongle : set DTR low for 10 ms */ /* Reset the dongle : set DTR low for 10 ms */
sirdev_set_dtr_rts(dev, FALSE, TRUE); sirdev_set_dtr_rts(dev, FALSE, TRUE);

View file

@ -63,7 +63,7 @@ static int mcp2120_open(struct sir_dev *dev)
{ {
struct qos_info *qos = &dev->qos; struct qos_info *qos = &dev->qos;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* seems no explicit power-on required here and reset switching it on anyway */ /* seems no explicit power-on required here and reset switching it on anyway */
@ -76,7 +76,7 @@ static int mcp2120_open(struct sir_dev *dev)
static int mcp2120_close(struct sir_dev *dev) static int mcp2120_close(struct sir_dev *dev)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* Power off dongle */ /* Power off dongle */
/* reset and inhibit mcp2120 */ /* reset and inhibit mcp2120 */
@ -102,7 +102,7 @@ static int mcp2120_change_speed(struct sir_dev *dev, unsigned speed)
u8 control[2]; u8 control[2];
static int ret = 0; static int ret = 0;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
switch (state) { switch (state) {
case SIRDEV_STATE_DONGLE_SPEED: case SIRDEV_STATE_DONGLE_SPEED:
@ -155,7 +155,7 @@ static int mcp2120_change_speed(struct sir_dev *dev, unsigned speed)
break; break;
default: default:
IRDA_ERROR("%s(), undefine state %d\n", __FUNCTION__, state); IRDA_ERROR("%s(), undefine state %d\n", __func__, state);
ret = -EINVAL; ret = -EINVAL;
break; break;
} }
@ -187,7 +187,7 @@ static int mcp2120_reset(struct sir_dev *dev)
unsigned delay = 0; unsigned delay = 0;
int ret = 0; int ret = 0;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
switch (state) { switch (state) {
case SIRDEV_STATE_DONGLE_RESET: case SIRDEV_STATE_DONGLE_RESET:
@ -213,7 +213,7 @@ static int mcp2120_reset(struct sir_dev *dev)
break; break;
default: default:
IRDA_ERROR("%s(), undefined state %d\n", __FUNCTION__, state); IRDA_ERROR("%s(), undefined state %d\n", __func__, state);
ret = -EINVAL; ret = -EINVAL;
break; break;
} }

View file

@ -151,8 +151,8 @@ static char *dongle_types[] = {
static chipio_t pnp_info; static chipio_t pnp_info;
static const struct pnp_device_id nsc_ircc_pnp_table[] = { static const struct pnp_device_id nsc_ircc_pnp_table[] = {
{ .id = "NSC6001", .driver_data = 0 }, { .id = "NSC6001", .driver_data = 0 },
{ .id = "IBM0071", .driver_data = 0 },
{ .id = "HWPC224", .driver_data = 0 }, { .id = "HWPC224", .driver_data = 0 },
{ .id = "IBM0071", .driver_data = NSC_FORCE_DONGLE_TYPE9 },
{ } { }
}; };
@ -223,7 +223,7 @@ static int __init nsc_ircc_init(void)
/* Probe for all the NSC chipsets we know about */ /* Probe for all the NSC chipsets we know about */
for (chip = chips; chip->name ; chip++) { for (chip = chips; chip->name ; chip++) {
IRDA_DEBUG(2, "%s(), Probing for %s ...\n", __FUNCTION__, IRDA_DEBUG(2, "%s(), Probing for %s ...\n", __func__,
chip->name); chip->name);
/* Try all config registers for this chip */ /* Try all config registers for this chip */
@ -235,7 +235,7 @@ static int __init nsc_ircc_init(void)
/* Read index register */ /* Read index register */
reg = inb(cfg_base); reg = inb(cfg_base);
if (reg == 0xff) { if (reg == 0xff) {
IRDA_DEBUG(2, "%s() no chip at 0x%03x\n", __FUNCTION__, cfg_base); IRDA_DEBUG(2, "%s() no chip at 0x%03x\n", __func__, cfg_base);
continue; continue;
} }
@ -244,7 +244,7 @@ static int __init nsc_ircc_init(void)
id = inb(cfg_base+1); id = inb(cfg_base+1);
if ((id & chip->cid_mask) == chip->cid_value) { if ((id & chip->cid_mask) == chip->cid_value) {
IRDA_DEBUG(2, "%s() Found %s chip, revision=%d\n", IRDA_DEBUG(2, "%s() Found %s chip, revision=%d\n",
__FUNCTION__, chip->name, id & ~chip->cid_mask); __func__, chip->name, id & ~chip->cid_mask);
/* /*
* If we found a correct PnP setting, * If we found a correct PnP setting,
@ -295,7 +295,7 @@ static int __init nsc_ircc_init(void)
} }
i++; i++;
} else { } else {
IRDA_DEBUG(2, "%s(), Wrong chip id=0x%02x\n", __FUNCTION__, id); IRDA_DEBUG(2, "%s(), Wrong chip id=0x%02x\n", __func__, id);
} }
} }
} }
@ -345,7 +345,7 @@ static int __init nsc_ircc_open(chipio_t *info)
void *ret; void *ret;
int err, chip_index; int err, chip_index;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
for (chip_index = 0; chip_index < ARRAY_SIZE(dev_self); chip_index++) { for (chip_index = 0; chip_index < ARRAY_SIZE(dev_self); chip_index++) {
@ -354,7 +354,7 @@ static int __init nsc_ircc_open(chipio_t *info)
} }
if (chip_index == ARRAY_SIZE(dev_self)) { if (chip_index == ARRAY_SIZE(dev_self)) {
IRDA_ERROR("%s(), maximum number of supported chips reached!\n", __FUNCTION__); IRDA_ERROR("%s(), maximum number of supported chips reached!\n", __func__);
return -ENOMEM; return -ENOMEM;
} }
@ -369,7 +369,7 @@ static int __init nsc_ircc_open(chipio_t *info)
dev = alloc_irdadev(sizeof(struct nsc_ircc_cb)); dev = alloc_irdadev(sizeof(struct nsc_ircc_cb));
if (dev == NULL) { if (dev == NULL) {
IRDA_ERROR("%s(), can't allocate memory for " IRDA_ERROR("%s(), can't allocate memory for "
"control block!\n", __FUNCTION__); "control block!\n", __func__);
return -ENOMEM; return -ENOMEM;
} }
@ -393,7 +393,7 @@ static int __init nsc_ircc_open(chipio_t *info)
ret = request_region(self->io.fir_base, self->io.fir_ext, driver_name); ret = request_region(self->io.fir_base, self->io.fir_ext, driver_name);
if (!ret) { if (!ret) {
IRDA_WARNING("%s(), can't get iobase of 0x%03x\n", IRDA_WARNING("%s(), can't get iobase of 0x%03x\n",
__FUNCTION__, self->io.fir_base); __func__, self->io.fir_base);
err = -ENODEV; err = -ENODEV;
goto out1; goto out1;
} }
@ -450,7 +450,7 @@ static int __init nsc_ircc_open(chipio_t *info)
err = register_netdev(dev); err = register_netdev(dev);
if (err) { if (err) {
IRDA_ERROR("%s(), register_netdev() failed!\n", __FUNCTION__); IRDA_ERROR("%s(), register_netdev() failed!\n", __func__);
goto out4; goto out4;
} }
IRDA_MESSAGE("IrDA: Registered device %s\n", dev->name); IRDA_MESSAGE("IrDA: Registered device %s\n", dev->name);
@ -506,7 +506,7 @@ static int __exit nsc_ircc_close(struct nsc_ircc_cb *self)
{ {
int iobase; int iobase;
IRDA_DEBUG(4, "%s()\n", __FUNCTION__); IRDA_DEBUG(4, "%s()\n", __func__);
IRDA_ASSERT(self != NULL, return -1;); IRDA_ASSERT(self != NULL, return -1;);
@ -519,7 +519,7 @@ static int __exit nsc_ircc_close(struct nsc_ircc_cb *self)
/* Release the PORT that this driver is using */ /* Release the PORT that this driver is using */
IRDA_DEBUG(4, "%s(), Releasing Region %03x\n", IRDA_DEBUG(4, "%s(), Releasing Region %03x\n",
__FUNCTION__, self->io.fir_base); __func__, self->io.fir_base);
release_region(self->io.fir_base, self->io.fir_ext); release_region(self->io.fir_base, self->io.fir_ext);
if (self->tx_buff.head) if (self->tx_buff.head)
@ -557,7 +557,7 @@ static int nsc_ircc_init_108(nsc_chip_t *chip, chipio_t *info)
case 0x2e8: outb(0x15, cfg_base+1); break; case 0x2e8: outb(0x15, cfg_base+1); break;
case 0x3f8: outb(0x16, cfg_base+1); break; case 0x3f8: outb(0x16, cfg_base+1); break;
case 0x2f8: outb(0x17, cfg_base+1); break; case 0x2f8: outb(0x17, cfg_base+1); break;
default: IRDA_ERROR("%s(), invalid base_address", __FUNCTION__); default: IRDA_ERROR("%s(), invalid base_address", __func__);
} }
/* Control Signal Routing Register (CSRT) */ /* Control Signal Routing Register (CSRT) */
@ -569,7 +569,7 @@ static int nsc_ircc_init_108(nsc_chip_t *chip, chipio_t *info)
case 9: temp = 0x05; break; case 9: temp = 0x05; break;
case 11: temp = 0x06; break; case 11: temp = 0x06; break;
case 15: temp = 0x07; break; case 15: temp = 0x07; break;
default: IRDA_ERROR("%s(), invalid irq", __FUNCTION__); default: IRDA_ERROR("%s(), invalid irq", __func__);
} }
outb(CFG_108_CSRT, cfg_base); outb(CFG_108_CSRT, cfg_base);
@ -577,7 +577,7 @@ static int nsc_ircc_init_108(nsc_chip_t *chip, chipio_t *info)
case 0: outb(0x08+temp, cfg_base+1); break; case 0: outb(0x08+temp, cfg_base+1); break;
case 1: outb(0x10+temp, cfg_base+1); break; case 1: outb(0x10+temp, cfg_base+1); break;
case 3: outb(0x18+temp, cfg_base+1); break; case 3: outb(0x18+temp, cfg_base+1); break;
default: IRDA_ERROR("%s(), invalid dma", __FUNCTION__); default: IRDA_ERROR("%s(), invalid dma", __func__);
} }
outb(CFG_108_MCTL, cfg_base); /* Mode Control Register (MCTL) */ outb(CFG_108_MCTL, cfg_base); /* Mode Control Register (MCTL) */
@ -616,7 +616,7 @@ static int nsc_ircc_probe_108(nsc_chip_t *chip, chipio_t *info)
break; break;
} }
info->sir_base = info->fir_base; info->sir_base = info->fir_base;
IRDA_DEBUG(2, "%s(), probing fir_base=0x%03x\n", __FUNCTION__, IRDA_DEBUG(2, "%s(), probing fir_base=0x%03x\n", __func__,
info->fir_base); info->fir_base);
/* Read control signals routing register (CSRT) */ /* Read control signals routing register (CSRT) */
@ -649,7 +649,7 @@ static int nsc_ircc_probe_108(nsc_chip_t *chip, chipio_t *info)
info->irq = 15; info->irq = 15;
break; break;
} }
IRDA_DEBUG(2, "%s(), probing irq=%d\n", __FUNCTION__, info->irq); IRDA_DEBUG(2, "%s(), probing irq=%d\n", __func__, info->irq);
/* Currently we only read Rx DMA but it will also be used for Tx */ /* Currently we only read Rx DMA but it will also be used for Tx */
switch ((reg >> 3) & 0x03) { switch ((reg >> 3) & 0x03) {
@ -666,7 +666,7 @@ static int nsc_ircc_probe_108(nsc_chip_t *chip, chipio_t *info)
info->dma = 3; info->dma = 3;
break; break;
} }
IRDA_DEBUG(2, "%s(), probing dma=%d\n", __FUNCTION__, info->dma); IRDA_DEBUG(2, "%s(), probing dma=%d\n", __func__, info->dma);
/* Read mode control register (MCTL) */ /* Read mode control register (MCTL) */
outb(CFG_108_MCTL, cfg_base); outb(CFG_108_MCTL, cfg_base);
@ -823,7 +823,7 @@ static int nsc_ircc_init_39x(nsc_chip_t *chip, chipio_t *info)
/* User is sure about his config... accept it. */ /* User is sure about his config... accept it. */
IRDA_DEBUG(2, "%s(): nsc_ircc_init_39x (user settings): " IRDA_DEBUG(2, "%s(): nsc_ircc_init_39x (user settings): "
"io=0x%04x, irq=%d, dma=%d\n", "io=0x%04x, irq=%d, dma=%d\n",
__FUNCTION__, info->fir_base, info->irq, info->dma); __func__, info->fir_base, info->irq, info->dma);
/* Access bank for SP2 */ /* Access bank for SP2 */
outb(CFG_39X_LDN, cfg_base); outb(CFG_39X_LDN, cfg_base);
@ -864,7 +864,7 @@ static int nsc_ircc_probe_39x(nsc_chip_t *chip, chipio_t *info)
int enabled, susp; int enabled, susp;
IRDA_DEBUG(2, "%s(), nsc_ircc_probe_39x, base=%d\n", IRDA_DEBUG(2, "%s(), nsc_ircc_probe_39x, base=%d\n",
__FUNCTION__, cfg_base); __func__, cfg_base);
/* This function should be executed with irq off to avoid /* This function should be executed with irq off to avoid
* another driver messing with the Super I/O bank - Jean II */ * another driver messing with the Super I/O bank - Jean II */
@ -898,7 +898,7 @@ static int nsc_ircc_probe_39x(nsc_chip_t *chip, chipio_t *info)
outb(CFG_39X_SPC, cfg_base); outb(CFG_39X_SPC, cfg_base);
susp = 1 - ((inb(cfg_base+1) & 0x02) >> 1); susp = 1 - ((inb(cfg_base+1) & 0x02) >> 1);
IRDA_DEBUG(2, "%s(): io=0x%02x%02x, irq=%d (type %d), rxdma=%d, txdma=%d, enabled=%d (suspended=%d)\n", __FUNCTION__, reg1,reg2,irq,irqt,dma1,dma2,enabled,susp); IRDA_DEBUG(2, "%s(): io=0x%02x%02x, irq=%d (type %d), rxdma=%d, txdma=%d, enabled=%d (suspended=%d)\n", __func__, reg1,reg2,irq,irqt,dma1,dma2,enabled,susp);
/* Configure SP2 */ /* Configure SP2 */
@ -930,7 +930,10 @@ static int nsc_ircc_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *i
pnp_info.dma = -1; pnp_info.dma = -1;
pnp_succeeded = 1; pnp_succeeded = 1;
/* There don't seem to be any way to get the cfg_base. if (id->driver_data & NSC_FORCE_DONGLE_TYPE9)
dongle_id = 0x9;
/* There doesn't seem to be any way of getting the cfg_base.
* On my box, cfg_base is in the PnP descriptor of the * On my box, cfg_base is in the PnP descriptor of the
* motherboard. Oh well... Jean II */ * motherboard. Oh well... Jean II */
@ -947,7 +950,7 @@ static int nsc_ircc_pnp_probe(struct pnp_dev *dev, const struct pnp_device_id *i
pnp_info.dma = pnp_dma(dev, 0); pnp_info.dma = pnp_dma(dev, 0);
IRDA_DEBUG(0, "%s() : From PnP, found firbase 0x%03X ; irq %d ; dma %d.\n", IRDA_DEBUG(0, "%s() : From PnP, found firbase 0x%03X ; irq %d ; dma %d.\n",
__FUNCTION__, pnp_info.fir_base, pnp_info.irq, pnp_info.dma); __func__, pnp_info.fir_base, pnp_info.irq, pnp_info.dma);
if((pnp_info.fir_base == 0) || if((pnp_info.fir_base == 0) ||
(pnp_info.irq == -1) || (pnp_info.dma == -1)) { (pnp_info.irq == -1) || (pnp_info.dma == -1)) {
@ -976,7 +979,7 @@ static int nsc_ircc_setup(chipio_t *info)
version = inb(iobase+MID); version = inb(iobase+MID);
IRDA_DEBUG(2, "%s() Driver %s Found chip version %02x\n", IRDA_DEBUG(2, "%s() Driver %s Found chip version %02x\n",
__FUNCTION__, driver_name, version); __func__, driver_name, version);
/* Should be 0x2? */ /* Should be 0x2? */
if (0x20 != (version & 0xf0)) { if (0x20 != (version & 0xf0)) {
@ -1080,30 +1083,30 @@ static void nsc_ircc_init_dongle_interface (int iobase, int dongle_id)
case 0x00: /* same as */ case 0x00: /* same as */
case 0x01: /* Differential serial interface */ case 0x01: /* Differential serial interface */
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
break; break;
case 0x02: /* same as */ case 0x02: /* same as */
case 0x03: /* Reserved */ case 0x03: /* Reserved */
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
break; break;
case 0x04: /* Sharp RY5HD01 */ case 0x04: /* Sharp RY5HD01 */
break; break;
case 0x05: /* Reserved, but this is what the Thinkpad reports */ case 0x05: /* Reserved, but this is what the Thinkpad reports */
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
break; break;
case 0x06: /* Single-ended serial interface */ case 0x06: /* Single-ended serial interface */
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
break; break;
case 0x07: /* Consumer-IR only */ case 0x07: /* Consumer-IR only */
IRDA_DEBUG(0, "%s(), %s is not for IrDA mode\n", IRDA_DEBUG(0, "%s(), %s is not for IrDA mode\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
break; break;
case 0x08: /* HP HSDL-2300, HP HSDL-3600/HSDL-3610 */ case 0x08: /* HP HSDL-2300, HP HSDL-3600/HSDL-3610 */
IRDA_DEBUG(0, "%s(), %s\n", IRDA_DEBUG(0, "%s(), %s\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
break; break;
case 0x09: /* IBM31T1100 or Temic TFDS6000/TFDS6500 */ case 0x09: /* IBM31T1100 or Temic TFDS6000/TFDS6500 */
outb(0x28, iobase+7); /* Set irsl[0-2] as output */ outb(0x28, iobase+7); /* Set irsl[0-2] as output */
@ -1111,7 +1114,7 @@ static void nsc_ircc_init_dongle_interface (int iobase, int dongle_id)
case 0x0A: /* same as */ case 0x0A: /* same as */
case 0x0B: /* Reserved */ case 0x0B: /* Reserved */
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
break; break;
case 0x0C: /* same as */ case 0x0C: /* same as */
case 0x0D: /* HP HSDL-1100/HSDL-2100 */ case 0x0D: /* HP HSDL-1100/HSDL-2100 */
@ -1126,14 +1129,14 @@ static void nsc_ircc_init_dongle_interface (int iobase, int dongle_id)
break; break;
case 0x0F: /* No dongle connected */ case 0x0F: /* No dongle connected */
IRDA_DEBUG(0, "%s(), %s\n", IRDA_DEBUG(0, "%s(), %s\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
switch_bank(iobase, BANK0); switch_bank(iobase, BANK0);
outb(0x62, iobase+MCR); outb(0x62, iobase+MCR);
break; break;
default: default:
IRDA_DEBUG(0, "%s(), invalid dongle_id %#x", IRDA_DEBUG(0, "%s(), invalid dongle_id %#x",
__FUNCTION__, dongle_id); __func__, dongle_id);
} }
/* IRCFG1: IRSL1 and 2 are set to IrDA mode */ /* IRCFG1: IRSL1 and 2 are set to IrDA mode */
@ -1165,30 +1168,30 @@ static void nsc_ircc_change_dongle_speed(int iobase, int speed, int dongle_id)
case 0x00: /* same as */ case 0x00: /* same as */
case 0x01: /* Differential serial interface */ case 0x01: /* Differential serial interface */
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
break; break;
case 0x02: /* same as */ case 0x02: /* same as */
case 0x03: /* Reserved */ case 0x03: /* Reserved */
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
break; break;
case 0x04: /* Sharp RY5HD01 */ case 0x04: /* Sharp RY5HD01 */
break; break;
case 0x05: /* Reserved */ case 0x05: /* Reserved */
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
break; break;
case 0x06: /* Single-ended serial interface */ case 0x06: /* Single-ended serial interface */
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
break; break;
case 0x07: /* Consumer-IR only */ case 0x07: /* Consumer-IR only */
IRDA_DEBUG(0, "%s(), %s is not for IrDA mode\n", IRDA_DEBUG(0, "%s(), %s is not for IrDA mode\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
break; break;
case 0x08: /* HP HSDL-2300, HP HSDL-3600/HSDL-3610 */ case 0x08: /* HP HSDL-2300, HP HSDL-3600/HSDL-3610 */
IRDA_DEBUG(0, "%s(), %s\n", IRDA_DEBUG(0, "%s(), %s\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
outb(0x00, iobase+4); outb(0x00, iobase+4);
if (speed > 115200) if (speed > 115200)
outb(0x01, iobase+4); outb(0x01, iobase+4);
@ -1207,7 +1210,7 @@ static void nsc_ircc_change_dongle_speed(int iobase, int speed, int dongle_id)
case 0x0A: /* same as */ case 0x0A: /* same as */
case 0x0B: /* Reserved */ case 0x0B: /* Reserved */
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n", IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
break; break;
case 0x0C: /* same as */ case 0x0C: /* same as */
case 0x0D: /* HP HSDL-1100/HSDL-2100 */ case 0x0D: /* HP HSDL-1100/HSDL-2100 */
@ -1216,13 +1219,13 @@ static void nsc_ircc_change_dongle_speed(int iobase, int speed, int dongle_id)
break; break;
case 0x0F: /* No dongle connected */ case 0x0F: /* No dongle connected */
IRDA_DEBUG(0, "%s(), %s is not for IrDA mode\n", IRDA_DEBUG(0, "%s(), %s is not for IrDA mode\n",
__FUNCTION__, dongle_types[dongle_id]); __func__, dongle_types[dongle_id]);
switch_bank(iobase, BANK0); switch_bank(iobase, BANK0);
outb(0x62, iobase+MCR); outb(0x62, iobase+MCR);
break; break;
default: default:
IRDA_DEBUG(0, "%s(), invalid data_rate\n", __FUNCTION__); IRDA_DEBUG(0, "%s(), invalid data_rate\n", __func__);
} }
/* Restore bank register */ /* Restore bank register */
outb(bank, iobase+BSR); outb(bank, iobase+BSR);
@ -1243,7 +1246,7 @@ static __u8 nsc_ircc_change_speed(struct nsc_ircc_cb *self, __u32 speed)
__u8 bank; __u8 bank;
__u8 ier; /* Interrupt enable register */ __u8 ier; /* Interrupt enable register */
IRDA_DEBUG(2, "%s(), speed=%d\n", __FUNCTION__, speed); IRDA_DEBUG(2, "%s(), speed=%d\n", __func__, speed);
IRDA_ASSERT(self != NULL, return 0;); IRDA_ASSERT(self != NULL, return 0;);
@ -1276,20 +1279,20 @@ static __u8 nsc_ircc_change_speed(struct nsc_ircc_cb *self, __u32 speed)
outb(inb(iobase+4) | 0x04, iobase+4); outb(inb(iobase+4) | 0x04, iobase+4);
mcr = MCR_MIR; mcr = MCR_MIR;
IRDA_DEBUG(0, "%s(), handling baud of 576000\n", __FUNCTION__); IRDA_DEBUG(0, "%s(), handling baud of 576000\n", __func__);
break; break;
case 1152000: case 1152000:
mcr = MCR_MIR; mcr = MCR_MIR;
IRDA_DEBUG(0, "%s(), handling baud of 1152000\n", __FUNCTION__); IRDA_DEBUG(0, "%s(), handling baud of 1152000\n", __func__);
break; break;
case 4000000: case 4000000:
mcr = MCR_FIR; mcr = MCR_FIR;
IRDA_DEBUG(0, "%s(), handling baud of 4000000\n", __FUNCTION__); IRDA_DEBUG(0, "%s(), handling baud of 4000000\n", __func__);
break; break;
default: default:
mcr = MCR_FIR; mcr = MCR_FIR;
IRDA_DEBUG(0, "%s(), unknown baud rate of %d\n", IRDA_DEBUG(0, "%s(), unknown baud rate of %d\n",
__FUNCTION__, speed); __func__, speed);
break; break;
} }
@ -1594,7 +1597,7 @@ static int nsc_ircc_pio_write(int iobase, __u8 *buf, int len, int fifo_size)
int actual = 0; int actual = 0;
__u8 bank; __u8 bank;
IRDA_DEBUG(4, "%s()\n", __FUNCTION__); IRDA_DEBUG(4, "%s()\n", __func__);
/* Save current bank */ /* Save current bank */
bank = inb(iobase+BSR); bank = inb(iobase+BSR);
@ -1602,7 +1605,7 @@ static int nsc_ircc_pio_write(int iobase, __u8 *buf, int len, int fifo_size)
switch_bank(iobase, BANK0); switch_bank(iobase, BANK0);
if (!(inb_p(iobase+LSR) & LSR_TXEMP)) { if (!(inb_p(iobase+LSR) & LSR_TXEMP)) {
IRDA_DEBUG(4, "%s(), warning, FIFO not empty yet!\n", IRDA_DEBUG(4, "%s(), warning, FIFO not empty yet!\n",
__FUNCTION__); __func__);
/* FIFO may still be filled to the Tx interrupt threshold */ /* FIFO may still be filled to the Tx interrupt threshold */
fifo_size -= 17; fifo_size -= 17;
@ -1615,7 +1618,7 @@ static int nsc_ircc_pio_write(int iobase, __u8 *buf, int len, int fifo_size)
} }
IRDA_DEBUG(4, "%s(), fifo_size %d ; %d sent of %d\n", IRDA_DEBUG(4, "%s(), fifo_size %d ; %d sent of %d\n",
__FUNCTION__, fifo_size, actual, len); __func__, fifo_size, actual, len);
/* Restore bank */ /* Restore bank */
outb(bank, iobase+BSR); outb(bank, iobase+BSR);
@ -1636,7 +1639,7 @@ static int nsc_ircc_dma_xmit_complete(struct nsc_ircc_cb *self)
__u8 bank; __u8 bank;
int ret = TRUE; int ret = TRUE;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
iobase = self->io.fir_base; iobase = self->io.fir_base;
@ -1767,7 +1770,7 @@ static int nsc_ircc_dma_receive_complete(struct nsc_ircc_cb *self, int iobase)
len = inb(iobase+RFLFL) | ((inb(iobase+RFLFH) & 0x1f) << 8); len = inb(iobase+RFLFL) | ((inb(iobase+RFLFH) & 0x1f) << 8);
if (st_fifo->tail >= MAX_RX_WINDOW) { if (st_fifo->tail >= MAX_RX_WINDOW) {
IRDA_DEBUG(0, "%s(), window is full!\n", __FUNCTION__); IRDA_DEBUG(0, "%s(), window is full!\n", __func__);
continue; continue;
} }
@ -1859,7 +1862,7 @@ static int nsc_ircc_dma_receive_complete(struct nsc_ircc_cb *self, int iobase)
if (skb == NULL) { if (skb == NULL) {
IRDA_WARNING("%s(), memory squeeze, " IRDA_WARNING("%s(), memory squeeze, "
"dropping frame.\n", "dropping frame.\n",
__FUNCTION__); __func__);
self->stats.rx_dropped++; self->stats.rx_dropped++;
/* Restore bank register */ /* Restore bank register */
@ -1965,7 +1968,7 @@ static void nsc_ircc_sir_interrupt(struct nsc_ircc_cb *self, int eir)
* Need to be after self->io.direction to avoid race with * Need to be after self->io.direction to avoid race with
* nsc_ircc_hard_xmit_sir() - Jean II */ * nsc_ircc_hard_xmit_sir() - Jean II */
if (self->new_speed) { if (self->new_speed) {
IRDA_DEBUG(2, "%s(), Changing speed!\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), Changing speed!\n", __func__);
self->ier = nsc_ircc_change_speed(self, self->ier = nsc_ircc_change_speed(self,
self->new_speed); self->new_speed);
self->new_speed = 0; self->new_speed = 0;
@ -2051,7 +2054,7 @@ static void nsc_ircc_fir_interrupt(struct nsc_ircc_cb *self, int iobase,
} else } else
IRDA_WARNING("%s(), potential " IRDA_WARNING("%s(), potential "
"Tx queue lockup !\n", "Tx queue lockup !\n",
__FUNCTION__); __func__);
} }
} else { } else {
/* Not finished yet, so interrupt on DMA again */ /* Not finished yet, so interrupt on DMA again */
@ -2160,7 +2163,7 @@ static int nsc_ircc_net_open(struct net_device *dev)
char hwname[32]; char hwname[32];
__u8 bank; __u8 bank;
IRDA_DEBUG(4, "%s()\n", __FUNCTION__); IRDA_DEBUG(4, "%s()\n", __func__);
IRDA_ASSERT(dev != NULL, return -1;); IRDA_ASSERT(dev != NULL, return -1;);
self = (struct nsc_ircc_cb *) dev->priv; self = (struct nsc_ircc_cb *) dev->priv;
@ -2222,7 +2225,7 @@ static int nsc_ircc_net_close(struct net_device *dev)
int iobase; int iobase;
__u8 bank; __u8 bank;
IRDA_DEBUG(4, "%s()\n", __FUNCTION__); IRDA_DEBUG(4, "%s()\n", __func__);
IRDA_ASSERT(dev != NULL, return -1;); IRDA_ASSERT(dev != NULL, return -1;);
@ -2276,7 +2279,7 @@ static int nsc_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
IRDA_ASSERT(self != NULL, return -1;); IRDA_ASSERT(self != NULL, return -1;);
IRDA_DEBUG(2, "%s(), %s, (cmd=0x%X)\n", __FUNCTION__, dev->name, cmd); IRDA_DEBUG(2, "%s(), %s, (cmd=0x%X)\n", __func__, dev->name, cmd);
switch (cmd) { switch (cmd) {
case SIOCSBANDWIDTH: /* Set bandwidth */ case SIOCSBANDWIDTH: /* Set bandwidth */

View file

@ -35,6 +35,9 @@
#include <linux/types.h> #include <linux/types.h>
#include <asm/io.h> #include <asm/io.h>
/* Features for chips (set in driver_data) */
#define NSC_FORCE_DONGLE_TYPE9 0x00000001
/* DMA modes needed */ /* DMA modes needed */
#define DMA_TX_MODE 0x08 /* Mem to I/O, ++, demand. */ #define DMA_TX_MODE 0x08 /* Mem to I/O, ++, demand. */
#define DMA_RX_MODE 0x04 /* I/O to mem, ++, demand. */ #define DMA_RX_MODE 0x04 /* I/O to mem, ++, demand. */

View file

@ -92,7 +92,7 @@ static int old_belkin_open(struct sir_dev *dev)
{ {
struct qos_info *qos = &dev->qos; struct qos_info *qos = &dev->qos;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* Power on dongle */ /* Power on dongle */
sirdev_set_dtr_rts(dev, TRUE, TRUE); sirdev_set_dtr_rts(dev, TRUE, TRUE);
@ -110,7 +110,7 @@ static int old_belkin_open(struct sir_dev *dev)
static int old_belkin_close(struct sir_dev *dev) static int old_belkin_close(struct sir_dev *dev)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* Power off dongle */ /* Power off dongle */
sirdev_set_dtr_rts(dev, FALSE, FALSE); sirdev_set_dtr_rts(dev, FALSE, FALSE);
@ -125,7 +125,7 @@ static int old_belkin_close(struct sir_dev *dev)
*/ */
static int old_belkin_change_speed(struct sir_dev *dev, unsigned speed) static int old_belkin_change_speed(struct sir_dev *dev, unsigned speed)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
dev->speed = 9600; dev->speed = 9600;
return (speed==dev->speed) ? 0 : -EINVAL; return (speed==dev->speed) ? 0 : -EINVAL;
@ -139,7 +139,7 @@ static int old_belkin_change_speed(struct sir_dev *dev, unsigned speed)
*/ */
static int old_belkin_reset(struct sir_dev *dev) static int old_belkin_reset(struct sir_dev *dev)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* This dongles speed "defaults" to 9600 bps ;-) */ /* This dongles speed "defaults" to 9600 bps ;-) */
dev->speed = 9600; dev->speed = 9600;

View file

@ -80,7 +80,7 @@ static int sirdev_tx_complete_fsm(struct sir_dev *dev)
return 0; return 0;
default: default:
IRDA_ERROR("%s - undefined state\n", __FUNCTION__); IRDA_ERROR("%s - undefined state\n", __func__);
return -EINVAL; return -EINVAL;
} }
fsm->substate = next_state; fsm->substate = next_state;
@ -107,11 +107,11 @@ static void sirdev_config_fsm(struct work_struct *work)
int ret = -1; int ret = -1;
unsigned delay; unsigned delay;
IRDA_DEBUG(2, "%s(), <%ld>\n", __FUNCTION__, jiffies); IRDA_DEBUG(2, "%s(), <%ld>\n", __func__, jiffies);
do { do {
IRDA_DEBUG(3, "%s - state=0x%04x / substate=0x%04x\n", IRDA_DEBUG(3, "%s - state=0x%04x / substate=0x%04x\n",
__FUNCTION__, fsm->state, fsm->substate); __func__, fsm->state, fsm->substate);
next_state = fsm->state; next_state = fsm->state;
delay = 0; delay = 0;
@ -249,12 +249,12 @@ static void sirdev_config_fsm(struct work_struct *work)
break; break;
default: default:
IRDA_ERROR("%s - undefined state\n", __FUNCTION__); IRDA_ERROR("%s - undefined state\n", __func__);
fsm->result = -EINVAL; fsm->result = -EINVAL;
/* fall thru */ /* fall thru */
case SIRDEV_STATE_ERROR: case SIRDEV_STATE_ERROR:
IRDA_ERROR("%s - error: %d\n", __FUNCTION__, fsm->result); IRDA_ERROR("%s - error: %d\n", __func__, fsm->result);
#if 0 /* don't enable this before we have netdev->tx_timeout to recover */ #if 0 /* don't enable this before we have netdev->tx_timeout to recover */
netif_stop_queue(dev->netdev); netif_stop_queue(dev->netdev);
@ -284,11 +284,12 @@ int sirdev_schedule_request(struct sir_dev *dev, int initial_state, unsigned par
{ {
struct sir_fsm *fsm = &dev->fsm; struct sir_fsm *fsm = &dev->fsm;
IRDA_DEBUG(2, "%s - state=0x%04x / param=%u\n", __FUNCTION__, initial_state, param); IRDA_DEBUG(2, "%s - state=0x%04x / param=%u\n", __func__,
initial_state, param);
if (down_trylock(&fsm->sem)) { if (down_trylock(&fsm->sem)) {
if (in_interrupt() || in_atomic() || irqs_disabled()) { if (in_interrupt() || in_atomic() || irqs_disabled()) {
IRDA_DEBUG(1, "%s(), state machine busy!\n", __FUNCTION__); IRDA_DEBUG(1, "%s(), state machine busy!\n", __func__);
return -EWOULDBLOCK; return -EWOULDBLOCK;
} else } else
down(&fsm->sem); down(&fsm->sem);
@ -296,7 +297,7 @@ int sirdev_schedule_request(struct sir_dev *dev, int initial_state, unsigned par
if (fsm->state == SIRDEV_STATE_DEAD) { if (fsm->state == SIRDEV_STATE_DEAD) {
/* race with sirdev_close should never happen */ /* race with sirdev_close should never happen */
IRDA_ERROR("%s(), instance staled!\n", __FUNCTION__); IRDA_ERROR("%s(), instance staled!\n", __func__);
up(&fsm->sem); up(&fsm->sem);
return -ESTALE; /* or better EPIPE? */ return -ESTALE; /* or better EPIPE? */
} }
@ -341,7 +342,7 @@ int sirdev_set_dongle(struct sir_dev *dev, IRDA_DONGLE type)
{ {
int err; int err;
IRDA_DEBUG(3, "%s : requesting dongle %d.\n", __FUNCTION__, type); IRDA_DEBUG(3, "%s : requesting dongle %d.\n", __func__, type);
err = sirdev_schedule_dongle_open(dev, type); err = sirdev_schedule_dongle_open(dev, type);
if (unlikely(err)) if (unlikely(err))
@ -376,7 +377,7 @@ int sirdev_raw_write(struct sir_dev *dev, const char *buf, int len)
ret = dev->drv->do_write(dev, dev->tx_buff.data, dev->tx_buff.len); ret = dev->drv->do_write(dev, dev->tx_buff.data, dev->tx_buff.len);
if (ret > 0) { if (ret > 0) {
IRDA_DEBUG(3, "%s(), raw-tx started\n", __FUNCTION__); IRDA_DEBUG(3, "%s(), raw-tx started\n", __func__);
dev->tx_buff.data += ret; dev->tx_buff.data += ret;
dev->tx_buff.len -= ret; dev->tx_buff.len -= ret;
@ -437,7 +438,7 @@ void sirdev_write_complete(struct sir_dev *dev)
spin_lock_irqsave(&dev->tx_lock, flags); spin_lock_irqsave(&dev->tx_lock, flags);
IRDA_DEBUG(3, "%s() - dev->tx_buff.len = %d\n", IRDA_DEBUG(3, "%s() - dev->tx_buff.len = %d\n",
__FUNCTION__, dev->tx_buff.len); __func__, dev->tx_buff.len);
if (likely(dev->tx_buff.len > 0)) { if (likely(dev->tx_buff.len > 0)) {
/* Write data left in transmit buffer */ /* Write data left in transmit buffer */
@ -450,7 +451,7 @@ void sirdev_write_complete(struct sir_dev *dev)
else if (unlikely(actual<0)) { else if (unlikely(actual<0)) {
/* could be dropped later when we have tx_timeout to recover */ /* could be dropped later when we have tx_timeout to recover */
IRDA_ERROR("%s: drv->do_write failed (%d)\n", IRDA_ERROR("%s: drv->do_write failed (%d)\n",
__FUNCTION__, actual); __func__, actual);
if ((skb=dev->tx_skb) != NULL) { if ((skb=dev->tx_skb) != NULL) {
dev->tx_skb = NULL; dev->tx_skb = NULL;
dev_kfree_skb_any(skb); dev_kfree_skb_any(skb);
@ -471,7 +472,7 @@ void sirdev_write_complete(struct sir_dev *dev)
* restarted when the irda-thread has completed the request. * restarted when the irda-thread has completed the request.
*/ */
IRDA_DEBUG(3, "%s(), raw-tx done\n", __FUNCTION__); IRDA_DEBUG(3, "%s(), raw-tx done\n", __func__);
dev->raw_tx = 0; dev->raw_tx = 0;
goto done; /* no post-frame handling in raw mode */ goto done; /* no post-frame handling in raw mode */
} }
@ -488,7 +489,7 @@ void sirdev_write_complete(struct sir_dev *dev)
* re-activated. * re-activated.
*/ */
IRDA_DEBUG(5, "%s(), finished with frame!\n", __FUNCTION__); IRDA_DEBUG(5, "%s(), finished with frame!\n", __func__);
if ((skb=dev->tx_skb) != NULL) { if ((skb=dev->tx_skb) != NULL) {
dev->tx_skb = NULL; dev->tx_skb = NULL;
@ -498,14 +499,14 @@ void sirdev_write_complete(struct sir_dev *dev)
} }
if (unlikely(dev->new_speed > 0)) { if (unlikely(dev->new_speed > 0)) {
IRDA_DEBUG(5, "%s(), Changing speed!\n", __FUNCTION__); IRDA_DEBUG(5, "%s(), Changing speed!\n", __func__);
err = sirdev_schedule_speed(dev, dev->new_speed); err = sirdev_schedule_speed(dev, dev->new_speed);
if (unlikely(err)) { if (unlikely(err)) {
/* should never happen /* should never happen
* forget the speed change and hope the stack recovers * forget the speed change and hope the stack recovers
*/ */
IRDA_ERROR("%s - schedule speed change failed: %d\n", IRDA_ERROR("%s - schedule speed change failed: %d\n",
__FUNCTION__, err); __func__, err);
netif_wake_queue(dev->netdev); netif_wake_queue(dev->netdev);
} }
/* else: success /* else: success
@ -532,13 +533,13 @@ EXPORT_SYMBOL(sirdev_write_complete);
int sirdev_receive(struct sir_dev *dev, const unsigned char *cp, size_t count) int sirdev_receive(struct sir_dev *dev, const unsigned char *cp, size_t count)
{ {
if (!dev || !dev->netdev) { if (!dev || !dev->netdev) {
IRDA_WARNING("%s(), not ready yet!\n", __FUNCTION__); IRDA_WARNING("%s(), not ready yet!\n", __func__);
return -1; return -1;
} }
if (!dev->irlap) { if (!dev->irlap) {
IRDA_WARNING("%s - too early: %p / %zd!\n", IRDA_WARNING("%s - too early: %p / %zd!\n",
__FUNCTION__, cp, count); __func__, cp, count);
return -1; return -1;
} }
@ -548,7 +549,7 @@ int sirdev_receive(struct sir_dev *dev, const unsigned char *cp, size_t count)
*/ */
irda_device_set_media_busy(dev->netdev, TRUE); irda_device_set_media_busy(dev->netdev, TRUE);
dev->stats.rx_dropped++; dev->stats.rx_dropped++;
IRDA_DEBUG(0, "%s; rx-drop: %zd\n", __FUNCTION__, count); IRDA_DEBUG(0, "%s; rx-drop: %zd\n", __func__, count);
return 0; return 0;
} }
@ -600,7 +601,7 @@ static int sirdev_hard_xmit(struct sk_buff *skb, struct net_device *ndev)
netif_stop_queue(ndev); netif_stop_queue(ndev);
IRDA_DEBUG(3, "%s(), skb->len = %d\n", __FUNCTION__, skb->len); IRDA_DEBUG(3, "%s(), skb->len = %d\n", __func__, skb->len);
speed = irda_get_next_speed(skb); speed = irda_get_next_speed(skb);
if ((speed != dev->speed) && (speed != -1)) { if ((speed != dev->speed) && (speed != -1)) {
@ -637,7 +638,7 @@ static int sirdev_hard_xmit(struct sk_buff *skb, struct net_device *ndev)
/* Check problems */ /* Check problems */
if(spin_is_locked(&dev->tx_lock)) { if(spin_is_locked(&dev->tx_lock)) {
IRDA_DEBUG(3, "%s(), write not completed\n", __FUNCTION__); IRDA_DEBUG(3, "%s(), write not completed\n", __func__);
} }
/* serialize with write completion */ /* serialize with write completion */
@ -666,7 +667,7 @@ static int sirdev_hard_xmit(struct sk_buff *skb, struct net_device *ndev)
else if (unlikely(actual < 0)) { else if (unlikely(actual < 0)) {
/* could be dropped later when we have tx_timeout to recover */ /* could be dropped later when we have tx_timeout to recover */
IRDA_ERROR("%s: drv->do_write failed (%d)\n", IRDA_ERROR("%s: drv->do_write failed (%d)\n",
__FUNCTION__, actual); __func__, actual);
dev_kfree_skb_any(skb); dev_kfree_skb_any(skb);
dev->stats.tx_errors++; dev->stats.tx_errors++;
dev->stats.tx_dropped++; dev->stats.tx_dropped++;
@ -687,7 +688,7 @@ static int sirdev_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd)
IRDA_ASSERT(dev != NULL, return -1;); IRDA_ASSERT(dev != NULL, return -1;);
IRDA_DEBUG(3, "%s(), %s, (cmd=0x%X)\n", __FUNCTION__, ndev->name, cmd); IRDA_DEBUG(3, "%s(), %s, (cmd=0x%X)\n", __func__, ndev->name, cmd);
switch (cmd) { switch (cmd) {
case SIOCSBANDWIDTH: /* Set bandwidth */ case SIOCSBANDWIDTH: /* Set bandwidth */
@ -804,7 +805,7 @@ static int sirdev_open(struct net_device *ndev)
if (!try_module_get(drv->owner)) if (!try_module_get(drv->owner))
return -ESTALE; return -ESTALE;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
if (sirdev_alloc_buffers(dev)) if (sirdev_alloc_buffers(dev))
goto errout_dec; goto errout_dec;
@ -822,7 +823,7 @@ static int sirdev_open(struct net_device *ndev)
netif_wake_queue(ndev); netif_wake_queue(ndev);
IRDA_DEBUG(2, "%s - done, speed = %d\n", __FUNCTION__, dev->speed); IRDA_DEBUG(2, "%s - done, speed = %d\n", __func__, dev->speed);
return 0; return 0;
@ -842,7 +843,7 @@ static int sirdev_close(struct net_device *ndev)
struct sir_dev *dev = ndev->priv; struct sir_dev *dev = ndev->priv;
const struct sir_driver *drv; const struct sir_driver *drv;
// IRDA_DEBUG(0, "%s\n", __FUNCTION__); // IRDA_DEBUG(0, "%s\n", __func__);
netif_stop_queue(ndev); netif_stop_queue(ndev);
@ -878,7 +879,7 @@ struct sir_dev * sirdev_get_instance(const struct sir_driver *drv, const char *n
struct net_device *ndev; struct net_device *ndev;
struct sir_dev *dev; struct sir_dev *dev;
IRDA_DEBUG(0, "%s - %s\n", __FUNCTION__, name); IRDA_DEBUG(0, "%s - %s\n", __func__, name);
/* instead of adding tests to protect against drv->do_write==NULL /* instead of adding tests to protect against drv->do_write==NULL
* at several places we refuse to create a sir_dev instance for * at several places we refuse to create a sir_dev instance for
@ -892,7 +893,7 @@ struct sir_dev * sirdev_get_instance(const struct sir_driver *drv, const char *n
*/ */
ndev = alloc_irdadev(sizeof(*dev)); ndev = alloc_irdadev(sizeof(*dev));
if (ndev == NULL) { if (ndev == NULL) {
IRDA_ERROR("%s - Can't allocate memory for IrDA control block!\n", __FUNCTION__); IRDA_ERROR("%s - Can't allocate memory for IrDA control block!\n", __func__);
goto out; goto out;
} }
dev = ndev->priv; dev = ndev->priv;
@ -921,7 +922,7 @@ struct sir_dev * sirdev_get_instance(const struct sir_driver *drv, const char *n
ndev->do_ioctl = sirdev_ioctl; ndev->do_ioctl = sirdev_ioctl;
if (register_netdev(ndev)) { if (register_netdev(ndev)) {
IRDA_ERROR("%s(), register_netdev() failed!\n", __FUNCTION__); IRDA_ERROR("%s(), register_netdev() failed!\n", __func__);
goto out_freenetdev; goto out_freenetdev;
} }
@ -938,7 +939,7 @@ int sirdev_put_instance(struct sir_dev *dev)
{ {
int err = 0; int err = 0;
IRDA_DEBUG(0, "%s\n", __FUNCTION__); IRDA_DEBUG(0, "%s\n", __func__);
atomic_set(&dev->enable_rx, 0); atomic_set(&dev->enable_rx, 0);
@ -948,7 +949,7 @@ int sirdev_put_instance(struct sir_dev *dev)
if (dev->dongle_drv) if (dev->dongle_drv)
err = sirdev_schedule_dongle_close(dev); err = sirdev_schedule_dongle_close(dev);
if (err) if (err)
IRDA_ERROR("%s - error %d\n", __FUNCTION__, err); IRDA_ERROR("%s - error %d\n", __func__, err);
sirdev_close(dev->netdev); sirdev_close(dev->netdev);

View file

@ -36,7 +36,7 @@ int irda_register_dongle(struct dongle_driver *new)
struct dongle_driver *drv; struct dongle_driver *drv;
IRDA_DEBUG(0, "%s : registering dongle \"%s\" (%d).\n", IRDA_DEBUG(0, "%s : registering dongle \"%s\" (%d).\n",
__FUNCTION__, new->driver_name, new->type); __func__, new->driver_name, new->type);
mutex_lock(&dongle_list_lock); mutex_lock(&dongle_list_lock);
list_for_each(entry, &dongle_list) { list_for_each(entry, &dongle_list) {

View file

@ -460,7 +460,7 @@ static int __init smsc_ircc_init(void)
{ {
int ret; int ret;
IRDA_DEBUG(1, "%s\n", __FUNCTION__); IRDA_DEBUG(1, "%s\n", __func__);
ret = platform_driver_register(&smsc_ircc_driver); ret = platform_driver_register(&smsc_ircc_driver);
if (ret) { if (ret) {
@ -500,7 +500,7 @@ static int __init smsc_ircc_open(unsigned int fir_base, unsigned int sir_base, u
struct net_device *dev; struct net_device *dev;
int err; int err;
IRDA_DEBUG(1, "%s\n", __FUNCTION__); IRDA_DEBUG(1, "%s\n", __func__);
err = smsc_ircc_present(fir_base, sir_base); err = smsc_ircc_present(fir_base, sir_base);
if (err) if (err)
@ -508,7 +508,7 @@ static int __init smsc_ircc_open(unsigned int fir_base, unsigned int sir_base, u
err = -ENOMEM; err = -ENOMEM;
if (dev_count >= ARRAY_SIZE(dev_self)) { if (dev_count >= ARRAY_SIZE(dev_self)) {
IRDA_WARNING("%s(), too many devices!\n", __FUNCTION__); IRDA_WARNING("%s(), too many devices!\n", __func__);
goto err_out1; goto err_out1;
} }
@ -517,7 +517,7 @@ static int __init smsc_ircc_open(unsigned int fir_base, unsigned int sir_base, u
*/ */
dev = alloc_irdadev(sizeof(struct smsc_ircc_cb)); dev = alloc_irdadev(sizeof(struct smsc_ircc_cb));
if (!dev) { if (!dev) {
IRDA_WARNING("%s() can't allocate net device\n", __FUNCTION__); IRDA_WARNING("%s() can't allocate net device\n", __func__);
goto err_out1; goto err_out1;
} }
@ -633,14 +633,14 @@ static int smsc_ircc_present(unsigned int fir_base, unsigned int sir_base)
if (!request_region(fir_base, SMSC_IRCC2_FIR_CHIP_IO_EXTENT, if (!request_region(fir_base, SMSC_IRCC2_FIR_CHIP_IO_EXTENT,
driver_name)) { driver_name)) {
IRDA_WARNING("%s: can't get fir_base of 0x%03x\n", IRDA_WARNING("%s: can't get fir_base of 0x%03x\n",
__FUNCTION__, fir_base); __func__, fir_base);
goto out1; goto out1;
} }
if (!request_region(sir_base, SMSC_IRCC2_SIR_CHIP_IO_EXTENT, if (!request_region(sir_base, SMSC_IRCC2_SIR_CHIP_IO_EXTENT,
driver_name)) { driver_name)) {
IRDA_WARNING("%s: can't get sir_base of 0x%03x\n", IRDA_WARNING("%s: can't get sir_base of 0x%03x\n",
__FUNCTION__, sir_base); __func__, sir_base);
goto out2; goto out2;
} }
@ -656,7 +656,7 @@ static int smsc_ircc_present(unsigned int fir_base, unsigned int sir_base)
if (high != 0x10 || low != 0xb8 || (chip != 0xf1 && chip != 0xf2)) { if (high != 0x10 || low != 0xb8 || (chip != 0xf1 && chip != 0xf2)) {
IRDA_WARNING("%s(), addr 0x%04x - no device found!\n", IRDA_WARNING("%s(), addr 0x%04x - no device found!\n",
__FUNCTION__, fir_base); __func__, fir_base);
goto out3; goto out3;
} }
IRDA_MESSAGE("SMsC IrDA Controller found\n IrCC version %d.%d, " IRDA_MESSAGE("SMsC IrDA Controller found\n IrCC version %d.%d, "
@ -793,7 +793,7 @@ static int smsc_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd
IRDA_ASSERT(self != NULL, return -1;); IRDA_ASSERT(self != NULL, return -1;);
IRDA_DEBUG(2, "%s(), %s, (cmd=0x%X)\n", __FUNCTION__, dev->name, cmd); IRDA_DEBUG(2, "%s(), %s, (cmd=0x%X)\n", __func__, dev->name, cmd);
switch (cmd) { switch (cmd) {
case SIOCSBANDWIDTH: /* Set bandwidth */ case SIOCSBANDWIDTH: /* Set bandwidth */
@ -878,7 +878,7 @@ int smsc_ircc_hard_xmit_sir(struct sk_buff *skb, struct net_device *dev)
unsigned long flags; unsigned long flags;
s32 speed; s32 speed;
IRDA_DEBUG(1, "%s\n", __FUNCTION__); IRDA_DEBUG(1, "%s\n", __func__);
IRDA_ASSERT(dev != NULL, return 0;); IRDA_ASSERT(dev != NULL, return 0;);
@ -953,21 +953,21 @@ static void smsc_ircc_set_fir_speed(struct smsc_ircc_cb *self, u32 speed)
ir_mode = IRCC_CFGA_IRDA_HDLC; ir_mode = IRCC_CFGA_IRDA_HDLC;
ctrl = IRCC_CRC; ctrl = IRCC_CRC;
fast = 0; fast = 0;
IRDA_DEBUG(0, "%s(), handling baud of 576000\n", __FUNCTION__); IRDA_DEBUG(0, "%s(), handling baud of 576000\n", __func__);
break; break;
case 1152000: case 1152000:
ir_mode = IRCC_CFGA_IRDA_HDLC; ir_mode = IRCC_CFGA_IRDA_HDLC;
ctrl = IRCC_1152 | IRCC_CRC; ctrl = IRCC_1152 | IRCC_CRC;
fast = IRCC_LCR_A_FAST | IRCC_LCR_A_GP_DATA; fast = IRCC_LCR_A_FAST | IRCC_LCR_A_GP_DATA;
IRDA_DEBUG(0, "%s(), handling baud of 1152000\n", IRDA_DEBUG(0, "%s(), handling baud of 1152000\n",
__FUNCTION__); __func__);
break; break;
case 4000000: case 4000000:
ir_mode = IRCC_CFGA_IRDA_4PPM; ir_mode = IRCC_CFGA_IRDA_4PPM;
ctrl = IRCC_CRC; ctrl = IRCC_CRC;
fast = IRCC_LCR_A_FAST; fast = IRCC_LCR_A_FAST;
IRDA_DEBUG(0, "%s(), handling baud of 4000000\n", IRDA_DEBUG(0, "%s(), handling baud of 4000000\n",
__FUNCTION__); __func__);
break; break;
} }
#if 0 #if 0
@ -995,7 +995,7 @@ static void smsc_ircc_fir_start(struct smsc_ircc_cb *self)
struct net_device *dev; struct net_device *dev;
int fir_base; int fir_base;
IRDA_DEBUG(1, "%s\n", __FUNCTION__); IRDA_DEBUG(1, "%s\n", __func__);
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
dev = self->netdev; dev = self->netdev;
@ -1043,7 +1043,7 @@ static void smsc_ircc_fir_stop(struct smsc_ircc_cb *self)
{ {
int fir_base; int fir_base;
IRDA_DEBUG(1, "%s\n", __FUNCTION__); IRDA_DEBUG(1, "%s\n", __func__);
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
@ -1067,7 +1067,7 @@ static void smsc_ircc_change_speed(struct smsc_ircc_cb *self, u32 speed)
struct net_device *dev; struct net_device *dev;
int last_speed_was_sir; int last_speed_was_sir;
IRDA_DEBUG(0, "%s() changing speed to: %d\n", __FUNCTION__, speed); IRDA_DEBUG(0, "%s() changing speed to: %d\n", __func__, speed);
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
dev = self->netdev; dev = self->netdev;
@ -1135,7 +1135,7 @@ void smsc_ircc_set_sir_speed(struct smsc_ircc_cb *self, __u32 speed)
int lcr; /* Line control reg */ int lcr; /* Line control reg */
int divisor; int divisor;
IRDA_DEBUG(0, "%s(), Setting speed to: %d\n", __FUNCTION__, speed); IRDA_DEBUG(0, "%s(), Setting speed to: %d\n", __func__, speed);
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
iobase = self->io.sir_base; iobase = self->io.sir_base;
@ -1170,7 +1170,7 @@ void smsc_ircc_set_sir_speed(struct smsc_ircc_cb *self, __u32 speed)
/* Turn on interrups */ /* Turn on interrups */
outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER); outb(UART_IER_RLSI | UART_IER_RDI | UART_IER_THRI, iobase + UART_IER);
IRDA_DEBUG(2, "%s() speed changed to: %d\n", __FUNCTION__, speed); IRDA_DEBUG(2, "%s() speed changed to: %d\n", __func__, speed);
} }
@ -1253,7 +1253,7 @@ static void smsc_ircc_dma_xmit(struct smsc_ircc_cb *self, int bofs)
int iobase = self->io.fir_base; int iobase = self->io.fir_base;
u8 ctrl; u8 ctrl;
IRDA_DEBUG(3, "%s\n", __FUNCTION__); IRDA_DEBUG(3, "%s\n", __func__);
#if 1 #if 1
/* Disable Rx */ /* Disable Rx */
register_bank(iobase, 0); register_bank(iobase, 0);
@ -1307,7 +1307,7 @@ static void smsc_ircc_dma_xmit_complete(struct smsc_ircc_cb *self)
{ {
int iobase = self->io.fir_base; int iobase = self->io.fir_base;
IRDA_DEBUG(3, "%s\n", __FUNCTION__); IRDA_DEBUG(3, "%s\n", __func__);
#if 0 #if 0
/* Disable Tx */ /* Disable Tx */
register_bank(iobase, 0); register_bank(iobase, 0);
@ -1411,7 +1411,7 @@ static void smsc_ircc_dma_receive_complete(struct smsc_ircc_cb *self)
register_bank(iobase, 0); register_bank(iobase, 0);
IRDA_DEBUG(3, "%s\n", __FUNCTION__); IRDA_DEBUG(3, "%s\n", __func__);
#if 0 #if 0
/* Disable Rx */ /* Disable Rx */
register_bank(iobase, 0); register_bank(iobase, 0);
@ -1422,7 +1422,7 @@ static void smsc_ircc_dma_receive_complete(struct smsc_ircc_cb *self)
lsr= inb(iobase + IRCC_LSR); lsr= inb(iobase + IRCC_LSR);
msgcnt = inb(iobase + IRCC_LCR_B) & 0x08; msgcnt = inb(iobase + IRCC_LCR_B) & 0x08;
IRDA_DEBUG(2, "%s: dma count = %d\n", __FUNCTION__, IRDA_DEBUG(2, "%s: dma count = %d\n", __func__,
get_dma_residue(self->io.dma)); get_dma_residue(self->io.dma));
len = self->rx_buff.truesize - get_dma_residue(self->io.dma); len = self->rx_buff.truesize - get_dma_residue(self->io.dma);
@ -1445,15 +1445,15 @@ static void smsc_ircc_dma_receive_complete(struct smsc_ircc_cb *self)
len -= self->io.speed < 4000000 ? 2 : 4; len -= self->io.speed < 4000000 ? 2 : 4;
if (len < 2 || len > 2050) { if (len < 2 || len > 2050) {
IRDA_WARNING("%s(), bogus len=%d\n", __FUNCTION__, len); IRDA_WARNING("%s(), bogus len=%d\n", __func__, len);
return; return;
} }
IRDA_DEBUG(2, "%s: msgcnt = %d, len=%d\n", __FUNCTION__, msgcnt, len); IRDA_DEBUG(2, "%s: msgcnt = %d, len=%d\n", __func__, msgcnt, len);
skb = dev_alloc_skb(len + 1); skb = dev_alloc_skb(len + 1);
if (!skb) { if (!skb) {
IRDA_WARNING("%s(), memory squeeze, dropping frame.\n", IRDA_WARNING("%s(), memory squeeze, dropping frame.\n",
__FUNCTION__); __func__);
return; return;
} }
/* Make sure IP header gets aligned */ /* Make sure IP header gets aligned */
@ -1494,7 +1494,7 @@ static void smsc_ircc_sir_receive(struct smsc_ircc_cb *self)
/* Make sure we don't stay here to long */ /* Make sure we don't stay here to long */
if (boguscount++ > 32) { if (boguscount++ > 32) {
IRDA_DEBUG(2, "%s(), breaking!\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), breaking!\n", __func__);
break; break;
} }
} while (inb(iobase + UART_LSR) & UART_LSR_DR); } while (inb(iobase + UART_LSR) & UART_LSR_DR);
@ -1536,7 +1536,7 @@ static irqreturn_t smsc_ircc_interrupt(int dummy, void *dev_id)
lcra = inb(iobase + IRCC_LCR_A); lcra = inb(iobase + IRCC_LCR_A);
lsr = inb(iobase + IRCC_LSR); lsr = inb(iobase + IRCC_LSR);
IRDA_DEBUG(2, "%s(), iir = 0x%02x\n", __FUNCTION__, iir); IRDA_DEBUG(2, "%s(), iir = 0x%02x\n", __func__, iir);
if (iir & IRCC_IIR_EOM) { if (iir & IRCC_IIR_EOM) {
if (self->io.direction == IO_RECV) if (self->io.direction == IO_RECV)
@ -1548,7 +1548,7 @@ static irqreturn_t smsc_ircc_interrupt(int dummy, void *dev_id)
} }
if (iir & IRCC_IIR_ACTIVE_FRAME) { if (iir & IRCC_IIR_ACTIVE_FRAME) {
/*printk(KERN_WARNING "%s(): Active Frame\n", __FUNCTION__);*/ /*printk(KERN_WARNING "%s(): Active Frame\n", __func__);*/
} }
/* Enable interrupts again */ /* Enable interrupts again */
@ -1587,11 +1587,11 @@ static irqreturn_t smsc_ircc_interrupt_sir(struct net_device *dev)
lsr = inb(iobase + UART_LSR); lsr = inb(iobase + UART_LSR);
IRDA_DEBUG(4, "%s(), iir=%02x, lsr=%02x, iobase=%#x\n", IRDA_DEBUG(4, "%s(), iir=%02x, lsr=%02x, iobase=%#x\n",
__FUNCTION__, iir, lsr, iobase); __func__, iir, lsr, iobase);
switch (iir) { switch (iir) {
case UART_IIR_RLSI: case UART_IIR_RLSI:
IRDA_DEBUG(2, "%s(), RLSI\n", __FUNCTION__); IRDA_DEBUG(2, "%s(), RLSI\n", __func__);
break; break;
case UART_IIR_RDI: case UART_IIR_RDI:
/* Receive interrupt */ /* Receive interrupt */
@ -1604,7 +1604,7 @@ static irqreturn_t smsc_ircc_interrupt_sir(struct net_device *dev)
break; break;
default: default:
IRDA_DEBUG(0, "%s(), unhandled IIR=%#x\n", IRDA_DEBUG(0, "%s(), unhandled IIR=%#x\n",
__FUNCTION__, iir); __func__, iir);
break; break;
} }
@ -1631,11 +1631,11 @@ static int ircc_is_receiving(struct smsc_ircc_cb *self)
int status = FALSE; int status = FALSE;
/* int iobase; */ /* int iobase; */
IRDA_DEBUG(1, "%s\n", __FUNCTION__); IRDA_DEBUG(1, "%s\n", __func__);
IRDA_ASSERT(self != NULL, return FALSE;); IRDA_ASSERT(self != NULL, return FALSE;);
IRDA_DEBUG(0, "%s: dma count = %d\n", __FUNCTION__, IRDA_DEBUG(0, "%s: dma count = %d\n", __func__,
get_dma_residue(self->io.dma)); get_dma_residue(self->io.dma));
status = (self->rx_buff.state != OUTSIDE_FRAME); status = (self->rx_buff.state != OUTSIDE_FRAME);
@ -1652,7 +1652,7 @@ static int smsc_ircc_request_irq(struct smsc_ircc_cb *self)
self->netdev->name, self->netdev); self->netdev->name, self->netdev);
if (error) if (error)
IRDA_DEBUG(0, "%s(), unable to allocate irq=%d, err=%d\n", IRDA_DEBUG(0, "%s(), unable to allocate irq=%d, err=%d\n",
__FUNCTION__, self->io.irq, error); __func__, self->io.irq, error);
return error; return error;
} }
@ -1696,21 +1696,21 @@ static int smsc_ircc_net_open(struct net_device *dev)
struct smsc_ircc_cb *self; struct smsc_ircc_cb *self;
char hwname[16]; char hwname[16];
IRDA_DEBUG(1, "%s\n", __FUNCTION__); IRDA_DEBUG(1, "%s\n", __func__);
IRDA_ASSERT(dev != NULL, return -1;); IRDA_ASSERT(dev != NULL, return -1;);
self = netdev_priv(dev); self = netdev_priv(dev);
IRDA_ASSERT(self != NULL, return 0;); IRDA_ASSERT(self != NULL, return 0;);
if (self->io.suspended) { if (self->io.suspended) {
IRDA_DEBUG(0, "%s(), device is suspended\n", __FUNCTION__); IRDA_DEBUG(0, "%s(), device is suspended\n", __func__);
return -EAGAIN; return -EAGAIN;
} }
if (request_irq(self->io.irq, smsc_ircc_interrupt, 0, dev->name, if (request_irq(self->io.irq, smsc_ircc_interrupt, 0, dev->name,
(void *) dev)) { (void *) dev)) {
IRDA_DEBUG(0, "%s(), unable to allocate irq=%d\n", IRDA_DEBUG(0, "%s(), unable to allocate irq=%d\n",
__FUNCTION__, self->io.irq); __func__, self->io.irq);
return -EAGAIN; return -EAGAIN;
} }
@ -1734,7 +1734,7 @@ static int smsc_ircc_net_open(struct net_device *dev)
smsc_ircc_net_close(dev); smsc_ircc_net_close(dev);
IRDA_WARNING("%s(), unable to allocate DMA=%d\n", IRDA_WARNING("%s(), unable to allocate DMA=%d\n",
__FUNCTION__, self->io.dma); __func__, self->io.dma);
return -EAGAIN; return -EAGAIN;
} }
@ -1753,7 +1753,7 @@ static int smsc_ircc_net_close(struct net_device *dev)
{ {
struct smsc_ircc_cb *self; struct smsc_ircc_cb *self;
IRDA_DEBUG(1, "%s\n", __FUNCTION__); IRDA_DEBUG(1, "%s\n", __func__);
IRDA_ASSERT(dev != NULL, return -1;); IRDA_ASSERT(dev != NULL, return -1;);
self = netdev_priv(dev); self = netdev_priv(dev);
@ -1836,7 +1836,7 @@ static int smsc_ircc_resume(struct platform_device *dev)
*/ */
static int __exit smsc_ircc_close(struct smsc_ircc_cb *self) static int __exit smsc_ircc_close(struct smsc_ircc_cb *self)
{ {
IRDA_DEBUG(1, "%s\n", __FUNCTION__); IRDA_DEBUG(1, "%s\n", __func__);
IRDA_ASSERT(self != NULL, return -1;); IRDA_ASSERT(self != NULL, return -1;);
@ -1848,12 +1848,12 @@ static int __exit smsc_ircc_close(struct smsc_ircc_cb *self)
smsc_ircc_stop_interrupts(self); smsc_ircc_stop_interrupts(self);
/* Release the PORTS that this driver is using */ /* Release the PORTS that this driver is using */
IRDA_DEBUG(0, "%s(), releasing 0x%03x\n", __FUNCTION__, IRDA_DEBUG(0, "%s(), releasing 0x%03x\n", __func__,
self->io.fir_base); self->io.fir_base);
release_region(self->io.fir_base, self->io.fir_ext); release_region(self->io.fir_base, self->io.fir_ext);
IRDA_DEBUG(0, "%s(), releasing 0x%03x\n", __FUNCTION__, IRDA_DEBUG(0, "%s(), releasing 0x%03x\n", __func__,
self->io.sir_base); self->io.sir_base);
release_region(self->io.sir_base, self->io.sir_ext); release_region(self->io.sir_base, self->io.sir_ext);
@ -1875,7 +1875,7 @@ static void __exit smsc_ircc_cleanup(void)
{ {
int i; int i;
IRDA_DEBUG(1, "%s\n", __FUNCTION__); IRDA_DEBUG(1, "%s\n", __func__);
for (i = 0; i < 2; i++) { for (i = 0; i < 2; i++) {
if (dev_self[i]) if (dev_self[i])
@ -1899,7 +1899,7 @@ void smsc_ircc_sir_start(struct smsc_ircc_cb *self)
struct net_device *dev; struct net_device *dev;
int fir_base, sir_base; int fir_base, sir_base;
IRDA_DEBUG(3, "%s\n", __FUNCTION__); IRDA_DEBUG(3, "%s\n", __func__);
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
dev = self->netdev; dev = self->netdev;
@ -1926,7 +1926,7 @@ void smsc_ircc_sir_start(struct smsc_ircc_cb *self)
/* Turn on interrups */ /* Turn on interrups */
outb(UART_IER_RLSI | UART_IER_RDI |UART_IER_THRI, sir_base + UART_IER); outb(UART_IER_RLSI | UART_IER_RDI |UART_IER_THRI, sir_base + UART_IER);
IRDA_DEBUG(3, "%s() - exit\n", __FUNCTION__); IRDA_DEBUG(3, "%s() - exit\n", __func__);
outb(0x00, fir_base + IRCC_MASTER); outb(0x00, fir_base + IRCC_MASTER);
} }
@ -1936,7 +1936,7 @@ void smsc_ircc_sir_stop(struct smsc_ircc_cb *self)
{ {
int iobase; int iobase;
IRDA_DEBUG(3, "%s\n", __FUNCTION__); IRDA_DEBUG(3, "%s\n", __func__);
iobase = self->io.sir_base; iobase = self->io.sir_base;
/* Reset UART */ /* Reset UART */
@ -1962,7 +1962,7 @@ static void smsc_ircc_sir_write_wakeup(struct smsc_ircc_cb *self)
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
IRDA_DEBUG(4, "%s\n", __FUNCTION__); IRDA_DEBUG(4, "%s\n", __func__);
iobase = self->io.sir_base; iobase = self->io.sir_base;
@ -1984,7 +1984,7 @@ static void smsc_ircc_sir_write_wakeup(struct smsc_ircc_cb *self)
*/ */
if (self->new_speed) { if (self->new_speed) {
IRDA_DEBUG(5, "%s(), Changing speed to %d.\n", IRDA_DEBUG(5, "%s(), Changing speed to %d.\n",
__FUNCTION__, self->new_speed); __func__, self->new_speed);
smsc_ircc_sir_wait_hw_transmitter_finish(self); smsc_ircc_sir_wait_hw_transmitter_finish(self);
smsc_ircc_change_speed(self, self->new_speed); smsc_ircc_change_speed(self, self->new_speed);
self->new_speed = 0; self->new_speed = 0;
@ -2023,7 +2023,7 @@ static int smsc_ircc_sir_write(int iobase, int fifo_size, __u8 *buf, int len)
/* Tx FIFO should be empty! */ /* Tx FIFO should be empty! */
if (!(inb(iobase + UART_LSR) & UART_LSR_THRE)) { if (!(inb(iobase + UART_LSR) & UART_LSR_THRE)) {
IRDA_WARNING("%s(), failed, fifo not empty!\n", __FUNCTION__); IRDA_WARNING("%s(), failed, fifo not empty!\n", __func__);
return 0; return 0;
} }
@ -2123,7 +2123,7 @@ static void smsc_ircc_sir_wait_hw_transmitter_finish(struct smsc_ircc_cb *self)
udelay(1); udelay(1);
if (count == 0) if (count == 0)
IRDA_DEBUG(0, "%s(): stuck transmitter\n", __FUNCTION__); IRDA_DEBUG(0, "%s(): stuck transmitter\n", __func__);
} }
@ -2145,7 +2145,7 @@ static int __init smsc_ircc_look_for_chips(void)
while (address->cfg_base) { while (address->cfg_base) {
cfg_base = address->cfg_base; cfg_base = address->cfg_base;
/*printk(KERN_WARNING "%s(): probing: 0x%02x for: 0x%02x\n", __FUNCTION__, cfg_base, address->type);*/ /*printk(KERN_WARNING "%s(): probing: 0x%02x for: 0x%02x\n", __func__, cfg_base, address->type);*/
if (address->type & SMSCSIO_TYPE_FDC) { if (address->type & SMSCSIO_TYPE_FDC) {
type = "FDC"; type = "FDC";
@ -2184,7 +2184,7 @@ static int __init smsc_superio_flat(const struct smsc_chip *chips, unsigned shor
u8 mode, dma, irq; u8 mode, dma, irq;
int ret = -ENODEV; int ret = -ENODEV;
IRDA_DEBUG(1, "%s\n", __FUNCTION__); IRDA_DEBUG(1, "%s\n", __func__);
if (smsc_ircc_probe(cfgbase, SMSCSIOFLAT_DEVICEID_REG, chips, type) == NULL) if (smsc_ircc_probe(cfgbase, SMSCSIOFLAT_DEVICEID_REG, chips, type) == NULL)
return ret; return ret;
@ -2192,10 +2192,10 @@ static int __init smsc_superio_flat(const struct smsc_chip *chips, unsigned shor
outb(SMSCSIOFLAT_UARTMODE0C_REG, cfgbase); outb(SMSCSIOFLAT_UARTMODE0C_REG, cfgbase);
mode = inb(cfgbase + 1); mode = inb(cfgbase + 1);
/*printk(KERN_WARNING "%s(): mode: 0x%02x\n", __FUNCTION__, mode);*/ /*printk(KERN_WARNING "%s(): mode: 0x%02x\n", __func__, mode);*/
if (!(mode & SMSCSIOFLAT_UART2MODE_VAL_IRDA)) if (!(mode & SMSCSIOFLAT_UART2MODE_VAL_IRDA))
IRDA_WARNING("%s(): IrDA not enabled\n", __FUNCTION__); IRDA_WARNING("%s(): IrDA not enabled\n", __func__);
outb(SMSCSIOFLAT_UART2BASEADDR_REG, cfgbase); outb(SMSCSIOFLAT_UART2BASEADDR_REG, cfgbase);
sirbase = inb(cfgbase + 1) << 2; sirbase = inb(cfgbase + 1) << 2;
@ -2212,7 +2212,7 @@ static int __init smsc_superio_flat(const struct smsc_chip *chips, unsigned shor
outb(SMSCSIOFLAT_UARTIRQSELECT_REG, cfgbase); outb(SMSCSIOFLAT_UARTIRQSELECT_REG, cfgbase);
irq = inb(cfgbase + 1) & SMSCSIOFLAT_UART2IRQSELECT_MASK; irq = inb(cfgbase + 1) & SMSCSIOFLAT_UART2IRQSELECT_MASK;
IRDA_MESSAGE("%s(): fir: 0x%02x, sir: 0x%02x, dma: %02d, irq: %d, mode: 0x%02x\n", __FUNCTION__, firbase, sirbase, dma, irq, mode); IRDA_MESSAGE("%s(): fir: 0x%02x, sir: 0x%02x, dma: %02d, irq: %d, mode: 0x%02x\n", __func__, firbase, sirbase, dma, irq, mode);
if (firbase && smsc_ircc_open(firbase, sirbase, dma, irq) == 0) if (firbase && smsc_ircc_open(firbase, sirbase, dma, irq) == 0)
ret = 0; ret = 0;
@ -2234,7 +2234,7 @@ static int __init smsc_superio_paged(const struct smsc_chip *chips, unsigned sho
unsigned short fir_io, sir_io; unsigned short fir_io, sir_io;
int ret = -ENODEV; int ret = -ENODEV;
IRDA_DEBUG(1, "%s\n", __FUNCTION__); IRDA_DEBUG(1, "%s\n", __func__);
if (smsc_ircc_probe(cfg_base, 0x20, chips, type) == NULL) if (smsc_ircc_probe(cfg_base, 0x20, chips, type) == NULL)
return ret; return ret;
@ -2268,7 +2268,7 @@ static int __init smsc_superio_paged(const struct smsc_chip *chips, unsigned sho
static int __init smsc_access(unsigned short cfg_base, unsigned char reg) static int __init smsc_access(unsigned short cfg_base, unsigned char reg)
{ {
IRDA_DEBUG(1, "%s\n", __FUNCTION__); IRDA_DEBUG(1, "%s\n", __func__);
outb(reg, cfg_base); outb(reg, cfg_base);
return inb(cfg_base) != reg ? -1 : 0; return inb(cfg_base) != reg ? -1 : 0;
@ -2278,7 +2278,7 @@ static const struct smsc_chip * __init smsc_ircc_probe(unsigned short cfg_base,
{ {
u8 devid, xdevid, rev; u8 devid, xdevid, rev;
IRDA_DEBUG(1, "%s\n", __FUNCTION__); IRDA_DEBUG(1, "%s\n", __func__);
/* Leave configuration */ /* Leave configuration */
@ -2353,7 +2353,7 @@ static int __init smsc_superio_fdc(unsigned short cfg_base)
if (!request_region(cfg_base, 2, driver_name)) { if (!request_region(cfg_base, 2, driver_name)) {
IRDA_WARNING("%s: can't get cfg_base of 0x%03x\n", IRDA_WARNING("%s: can't get cfg_base of 0x%03x\n",
__FUNCTION__, cfg_base); __func__, cfg_base);
} else { } else {
if (!smsc_superio_flat(fdc_chips_flat, cfg_base, "FDC") || if (!smsc_superio_flat(fdc_chips_flat, cfg_base, "FDC") ||
!smsc_superio_paged(fdc_chips_paged, cfg_base, "FDC")) !smsc_superio_paged(fdc_chips_paged, cfg_base, "FDC"))
@ -2371,7 +2371,7 @@ static int __init smsc_superio_lpc(unsigned short cfg_base)
if (!request_region(cfg_base, 2, driver_name)) { if (!request_region(cfg_base, 2, driver_name)) {
IRDA_WARNING("%s: can't get cfg_base of 0x%03x\n", IRDA_WARNING("%s: can't get cfg_base of 0x%03x\n",
__FUNCTION__, cfg_base); __func__, cfg_base);
} else { } else {
if (!smsc_superio_flat(lpc_chips_flat, cfg_base, "LPC") || if (!smsc_superio_flat(lpc_chips_flat, cfg_base, "LPC") ||
!smsc_superio_paged(lpc_chips_paged, cfg_base, "LPC")) !smsc_superio_paged(lpc_chips_paged, cfg_base, "LPC"))
@ -2932,7 +2932,7 @@ static void smsc_ircc_set_transceiver_smsc_ircc_atc(int fir_base, u32 speed)
/* empty */; /* empty */;
if (val) if (val)
IRDA_WARNING("%s(): ATC: 0x%02x\n", __FUNCTION__, IRDA_WARNING("%s(): ATC: 0x%02x\n", __func__,
inb(fir_base + IRCC_ATC)); inb(fir_base + IRCC_ATC));
} }

View file

@ -77,7 +77,7 @@ static int tekram_open(struct sir_dev *dev)
{ {
struct qos_info *qos = &dev->qos; struct qos_info *qos = &dev->qos;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
sirdev_set_dtr_rts(dev, TRUE, TRUE); sirdev_set_dtr_rts(dev, TRUE, TRUE);
@ -92,7 +92,7 @@ static int tekram_open(struct sir_dev *dev)
static int tekram_close(struct sir_dev *dev) static int tekram_close(struct sir_dev *dev)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* Power off dongle */ /* Power off dongle */
sirdev_set_dtr_rts(dev, FALSE, FALSE); sirdev_set_dtr_rts(dev, FALSE, FALSE);
@ -130,7 +130,7 @@ static int tekram_change_speed(struct sir_dev *dev, unsigned speed)
u8 byte; u8 byte;
static int ret = 0; static int ret = 0;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
switch(state) { switch(state) {
case SIRDEV_STATE_DONGLE_SPEED: case SIRDEV_STATE_DONGLE_SPEED:
@ -179,7 +179,7 @@ static int tekram_change_speed(struct sir_dev *dev, unsigned speed)
break; break;
default: default:
IRDA_ERROR("%s - undefined state %d\n", __FUNCTION__, state); IRDA_ERROR("%s - undefined state %d\n", __func__, state);
ret = -EINVAL; ret = -EINVAL;
break; break;
} }
@ -204,7 +204,7 @@ static int tekram_change_speed(struct sir_dev *dev, unsigned speed)
static int tekram_reset(struct sir_dev *dev) static int tekram_reset(struct sir_dev *dev)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* Clear DTR, Set RTS */ /* Clear DTR, Set RTS */
sirdev_set_dtr_rts(dev, FALSE, TRUE); sirdev_set_dtr_rts(dev, FALSE, TRUE);

View file

@ -181,7 +181,7 @@ static int toim3232_open(struct sir_dev *dev)
{ {
struct qos_info *qos = &dev->qos; struct qos_info *qos = &dev->qos;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* Pull the lines high to start with. /* Pull the lines high to start with.
* *
@ -209,7 +209,7 @@ static int toim3232_open(struct sir_dev *dev)
static int toim3232_close(struct sir_dev *dev) static int toim3232_close(struct sir_dev *dev)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* Power off dongle */ /* Power off dongle */
sirdev_set_dtr_rts(dev, FALSE, FALSE); sirdev_set_dtr_rts(dev, FALSE, FALSE);
@ -241,7 +241,7 @@ static int toim3232_change_speed(struct sir_dev *dev, unsigned speed)
u8 byte; u8 byte;
static int ret = 0; static int ret = 0;
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
switch(state) { switch(state) {
case SIRDEV_STATE_DONGLE_SPEED: case SIRDEV_STATE_DONGLE_SPEED:
@ -299,7 +299,7 @@ static int toim3232_change_speed(struct sir_dev *dev, unsigned speed)
break; break;
default: default:
printk(KERN_ERR "%s - undefined state %d\n", __FUNCTION__, state); printk(KERN_ERR "%s - undefined state %d\n", __func__, state);
ret = -EINVAL; ret = -EINVAL;
break; break;
} }
@ -344,7 +344,7 @@ static int toim3232_change_speed(struct sir_dev *dev, unsigned speed)
static int toim3232_reset(struct sir_dev *dev) static int toim3232_reset(struct sir_dev *dev)
{ {
IRDA_DEBUG(2, "%s()\n", __FUNCTION__); IRDA_DEBUG(2, "%s()\n", __func__);
/* Switch off both DTR and RTS to switch off dongle */ /* Switch off both DTR and RTS to switch off dongle */
sirdev_set_dtr_rts(dev, FALSE, FALSE); sirdev_set_dtr_rts(dev, FALSE, FALSE);

View file

@ -152,12 +152,12 @@ static int __init via_ircc_init(void)
{ {
int rc; int rc;
IRDA_DEBUG(3, "%s()\n", __FUNCTION__); IRDA_DEBUG(3, "%s()\n", __func__);
rc = pci_register_driver(&via_driver); rc = pci_register_driver(&via_driver);
if (rc < 0) { if (rc < 0) {
IRDA_DEBUG(0, "%s(): error rc = %d, returning -ENODEV...\n", IRDA_DEBUG(0, "%s(): error rc = %d, returning -ENODEV...\n",
__FUNCTION__, rc); __func__, rc);
return -ENODEV; return -ENODEV;
} }
return 0; return 0;
@ -170,11 +170,11 @@ static int __devinit via_init_one (struct pci_dev *pcidev, const struct pci_devi
u16 Chipset,FirDRQ1,FirDRQ0,FirIRQ,FirIOBase; u16 Chipset,FirDRQ1,FirDRQ0,FirIRQ,FirIOBase;
chipio_t info; chipio_t info;
IRDA_DEBUG(2, "%s(): Device ID=(0X%X)\n", __FUNCTION__, id->device); IRDA_DEBUG(2, "%s(): Device ID=(0X%X)\n", __func__, id->device);
rc = pci_enable_device (pcidev); rc = pci_enable_device (pcidev);
if (rc) { if (rc) {
IRDA_DEBUG(0, "%s(): error rc = %d\n", __FUNCTION__, rc); IRDA_DEBUG(0, "%s(): error rc = %d\n", __func__, rc);
return -ENODEV; return -ENODEV;
} }
@ -185,7 +185,7 @@ static int __devinit via_init_one (struct pci_dev *pcidev, const struct pci_devi
Chipset=0x3076; Chipset=0x3076;
if (Chipset==0x3076) { if (Chipset==0x3076) {
IRDA_DEBUG(2, "%s(): Chipset = 3076\n", __FUNCTION__); IRDA_DEBUG(2, "%s(): Chipset = 3076\n", __func__);
WriteLPCReg(7,0x0c ); WriteLPCReg(7,0x0c );
temp=ReadLPCReg(0x30);//check if BIOS Enable Fir temp=ReadLPCReg(0x30);//check if BIOS Enable Fir
@ -222,7 +222,7 @@ static int __devinit via_init_one (struct pci_dev *pcidev, const struct pci_devi
} else } else
rc = -ENODEV; //IR not turn on rc = -ENODEV; //IR not turn on
} else { //Not VT1211 } else { //Not VT1211
IRDA_DEBUG(2, "%s(): Chipset = 3096\n", __FUNCTION__); IRDA_DEBUG(2, "%s(): Chipset = 3096\n", __func__);
pci_read_config_byte(pcidev,0x67,&bTmp);//check if BIOS Enable Fir pci_read_config_byte(pcidev,0x67,&bTmp);//check if BIOS Enable Fir
if((bTmp&0x01)==1) { // BIOS enable FIR if((bTmp&0x01)==1) { // BIOS enable FIR
@ -262,7 +262,7 @@ static int __devinit via_init_one (struct pci_dev *pcidev, const struct pci_devi
rc = -ENODEV; //IR not turn on !!!!! rc = -ENODEV; //IR not turn on !!!!!
}//Not VT1211 }//Not VT1211
IRDA_DEBUG(2, "%s(): End - rc = %d\n", __FUNCTION__, rc); IRDA_DEBUG(2, "%s(): End - rc = %d\n", __func__, rc);
return rc; return rc;
} }
@ -276,7 +276,7 @@ static void via_ircc_clean(void)
{ {
int i; int i;
IRDA_DEBUG(3, "%s()\n", __FUNCTION__); IRDA_DEBUG(3, "%s()\n", __func__);
for (i=0; i < ARRAY_SIZE(dev_self); i++) { for (i=0; i < ARRAY_SIZE(dev_self); i++) {
if (dev_self[i]) if (dev_self[i])
@ -286,7 +286,7 @@ static void via_ircc_clean(void)
static void __devexit via_remove_one (struct pci_dev *pdev) static void __devexit via_remove_one (struct pci_dev *pdev)
{ {
IRDA_DEBUG(3, "%s()\n", __FUNCTION__); IRDA_DEBUG(3, "%s()\n", __func__);
/* FIXME : This is ugly. We should use pci_get_drvdata(pdev); /* FIXME : This is ugly. We should use pci_get_drvdata(pdev);
* to get our driver instance and call directly via_ircc_close(). * to get our driver instance and call directly via_ircc_close().
@ -301,7 +301,7 @@ static void __devexit via_remove_one (struct pci_dev *pdev)
static void __exit via_ircc_cleanup(void) static void __exit via_ircc_cleanup(void)
{ {
IRDA_DEBUG(3, "%s()\n", __FUNCTION__); IRDA_DEBUG(3, "%s()\n", __func__);
/* FIXME : This should be redundant, as pci_unregister_driver() /* FIXME : This should be redundant, as pci_unregister_driver()
* should call via_remove_one() on each device. * should call via_remove_one() on each device.
@ -324,7 +324,7 @@ static __devinit int via_ircc_open(int i, chipio_t * info, unsigned int id)
struct via_ircc_cb *self; struct via_ircc_cb *self;
int err; int err;
IRDA_DEBUG(3, "%s()\n", __FUNCTION__); IRDA_DEBUG(3, "%s()\n", __func__);
if (i >= ARRAY_SIZE(dev_self)) if (i >= ARRAY_SIZE(dev_self))
return -ENOMEM; return -ENOMEM;
@ -360,7 +360,7 @@ static __devinit int via_ircc_open(int i, chipio_t * info, unsigned int id)
/* Reserve the ioports that we need */ /* Reserve the ioports that we need */
if (!request_region(self->io.fir_base, self->io.fir_ext, driver_name)) { if (!request_region(self->io.fir_base, self->io.fir_ext, driver_name)) {
IRDA_DEBUG(0, "%s(), can't get iobase of 0x%03x\n", IRDA_DEBUG(0, "%s(), can't get iobase of 0x%03x\n",
__FUNCTION__, self->io.fir_base); __func__, self->io.fir_base);
err = -ENODEV; err = -ENODEV;
goto err_out1; goto err_out1;
} }
@ -471,7 +471,7 @@ static int via_ircc_close(struct via_ircc_cb *self)
{ {
int iobase; int iobase;
IRDA_DEBUG(3, "%s()\n", __FUNCTION__); IRDA_DEBUG(3, "%s()\n", __func__);
IRDA_ASSERT(self != NULL, return -1;); IRDA_ASSERT(self != NULL, return -1;);
@ -483,7 +483,7 @@ static int via_ircc_close(struct via_ircc_cb *self)
/* Release the PORT that this driver is using */ /* Release the PORT that this driver is using */
IRDA_DEBUG(2, "%s(), Releasing Region %03x\n", IRDA_DEBUG(2, "%s(), Releasing Region %03x\n",
__FUNCTION__, self->io.fir_base); __func__, self->io.fir_base);
release_region(self->io.fir_base, self->io.fir_ext); release_region(self->io.fir_base, self->io.fir_ext);
if (self->tx_buff.head) if (self->tx_buff.head)
dma_free_coherent(NULL, self->tx_buff.truesize, dma_free_coherent(NULL, self->tx_buff.truesize,
@ -509,7 +509,7 @@ static void via_hw_init(struct via_ircc_cb *self)
{ {
int iobase = self->io.fir_base; int iobase = self->io.fir_base;
IRDA_DEBUG(3, "%s()\n", __FUNCTION__); IRDA_DEBUG(3, "%s()\n", __func__);
SetMaxRxPacketSize(iobase, 0x0fff); //set to max:4095 SetMaxRxPacketSize(iobase, 0x0fff); //set to max:4095
// FIFO Init // FIFO Init
@ -582,7 +582,7 @@ static void via_ircc_change_dongle_speed(int iobase, int speed,
speed = speed; speed = speed;
IRDA_DEBUG(1, "%s(): change_dongle_speed to %d for 0x%x, %d\n", IRDA_DEBUG(1, "%s(): change_dongle_speed to %d for 0x%x, %d\n",
__FUNCTION__, speed, iobase, dongle_id); __func__, speed, iobase, dongle_id);
switch (dongle_id) { switch (dongle_id) {
@ -671,7 +671,7 @@ static void via_ircc_change_dongle_speed(int iobase, int speed,
case 0x11: /* Temic TFDS4500 */ case 0x11: /* Temic TFDS4500 */
IRDA_DEBUG(2, "%s: Temic TFDS4500: One RX pin, TX normal, RX inverted.\n", __FUNCTION__); IRDA_DEBUG(2, "%s: Temic TFDS4500: One RX pin, TX normal, RX inverted.\n", __func__);
UseOneRX(iobase, ON); //use ONE RX....RX1 UseOneRX(iobase, ON); //use ONE RX....RX1
InvertTX(iobase, OFF); InvertTX(iobase, OFF);
@ -689,7 +689,7 @@ static void via_ircc_change_dongle_speed(int iobase, int speed,
SlowIRRXLowActive(iobase, OFF); SlowIRRXLowActive(iobase, OFF);
} else{ } else{
IRDA_DEBUG(0, "%s: Warning: TFDS4500 not running in SIR mode !\n", __FUNCTION__); IRDA_DEBUG(0, "%s: Warning: TFDS4500 not running in SIR mode !\n", __func__);
} }
break; break;
@ -707,7 +707,7 @@ static void via_ircc_change_dongle_speed(int iobase, int speed,
default: default:
IRDA_ERROR("%s: Error: dongle_id %d unsupported !\n", IRDA_ERROR("%s: Error: dongle_id %d unsupported !\n",
__FUNCTION__, dongle_id); __func__, dongle_id);
} }
} }
@ -726,7 +726,7 @@ static void via_ircc_change_speed(struct via_ircc_cb *self, __u32 speed)
iobase = self->io.fir_base; iobase = self->io.fir_base;
/* Update accounting for new speed */ /* Update accounting for new speed */
self->io.speed = speed; self->io.speed = speed;
IRDA_DEBUG(1, "%s: change_speed to %d bps.\n", __FUNCTION__, speed); IRDA_DEBUG(1, "%s: change_speed to %d bps.\n", __func__, speed);
WriteReg(iobase, I_ST_CT_0, 0x0); WriteReg(iobase, I_ST_CT_0, 0x0);
@ -957,7 +957,7 @@ static int via_ircc_dma_xmit(struct via_ircc_cb *self, u16 iobase)
self->tx_buff.head) + self->tx_buff_dma, self->tx_buff.head) + self->tx_buff_dma,
self->tx_fifo.queue[self->tx_fifo.ptr].len, DMA_TX_MODE); self->tx_fifo.queue[self->tx_fifo.ptr].len, DMA_TX_MODE);
IRDA_DEBUG(1, "%s: tx_fifo.ptr=%x,len=%x,tx_fifo.len=%x..\n", IRDA_DEBUG(1, "%s: tx_fifo.ptr=%x,len=%x,tx_fifo.len=%x..\n",
__FUNCTION__, self->tx_fifo.ptr, __func__, self->tx_fifo.ptr,
self->tx_fifo.queue[self->tx_fifo.ptr].len, self->tx_fifo.queue[self->tx_fifo.ptr].len,
self->tx_fifo.len); self->tx_fifo.len);
@ -981,7 +981,7 @@ static int via_ircc_dma_xmit_complete(struct via_ircc_cb *self)
int ret = TRUE; int ret = TRUE;
u8 Tx_status; u8 Tx_status;
IRDA_DEBUG(3, "%s()\n", __FUNCTION__); IRDA_DEBUG(3, "%s()\n", __func__);
iobase = self->io.fir_base; iobase = self->io.fir_base;
/* Disable DMA */ /* Disable DMA */
@ -1014,7 +1014,7 @@ static int via_ircc_dma_xmit_complete(struct via_ircc_cb *self)
} }
IRDA_DEBUG(1, IRDA_DEBUG(1,
"%s: tx_fifo.len=%x ,tx_fifo.ptr=%x,tx_fifo.free=%x...\n", "%s: tx_fifo.len=%x ,tx_fifo.ptr=%x,tx_fifo.free=%x...\n",
__FUNCTION__, __func__,
self->tx_fifo.len, self->tx_fifo.ptr, self->tx_fifo.free); self->tx_fifo.len, self->tx_fifo.ptr, self->tx_fifo.free);
/* F01_S /* F01_S
// Any frames to be sent back-to-back? // Any frames to be sent back-to-back?
@ -1050,7 +1050,7 @@ static int via_ircc_dma_receive(struct via_ircc_cb *self)
iobase = self->io.fir_base; iobase = self->io.fir_base;
IRDA_DEBUG(3, "%s()\n", __FUNCTION__); IRDA_DEBUG(3, "%s()\n", __func__);
self->tx_fifo.len = self->tx_fifo.ptr = self->tx_fifo.free = 0; self->tx_fifo.len = self->tx_fifo.ptr = self->tx_fifo.free = 0;
self->tx_fifo.tail = self->tx_buff.head; self->tx_fifo.tail = self->tx_buff.head;
@ -1134,13 +1134,13 @@ static int via_ircc_dma_receive_complete(struct via_ircc_cb *self,
return TRUE; //interrupt only, data maybe move by RxT return TRUE; //interrupt only, data maybe move by RxT
if (((len - 4) < 2) || ((len - 4) > 2048)) { if (((len - 4) < 2) || ((len - 4) > 2048)) {
IRDA_DEBUG(1, "%s(): Trouble:len=%x,CurCount=%x,LastCount=%x..\n", IRDA_DEBUG(1, "%s(): Trouble:len=%x,CurCount=%x,LastCount=%x..\n",
__FUNCTION__, len, RxCurCount(iobase, self), __func__, len, RxCurCount(iobase, self),
self->RxLastCount); self->RxLastCount);
hwreset(self); hwreset(self);
return FALSE; return FALSE;
} }
IRDA_DEBUG(2, "%s(): fifo.len=%x,len=%x,CurCount=%x..\n", IRDA_DEBUG(2, "%s(): fifo.len=%x,len=%x,CurCount=%x..\n",
__FUNCTION__, __func__,
st_fifo->len, len - 4, RxCurCount(iobase, self)); st_fifo->len, len - 4, RxCurCount(iobase, self));
st_fifo->entries[st_fifo->tail].status = status; st_fifo->entries[st_fifo->tail].status = status;
@ -1187,7 +1187,7 @@ F01_E */
skb_put(skb, len - 4); skb_put(skb, len - 4);
skb_copy_to_linear_data(skb, self->rx_buff.data, len - 4); skb_copy_to_linear_data(skb, self->rx_buff.data, len - 4);
IRDA_DEBUG(2, "%s(): len=%x.rx_buff=%p\n", __FUNCTION__, IRDA_DEBUG(2, "%s(): len=%x.rx_buff=%p\n", __func__,
len - 4, self->rx_buff.data); len - 4, self->rx_buff.data);
// Move to next frame // Move to next frame
@ -1217,7 +1217,7 @@ static int upload_rxdata(struct via_ircc_cb *self, int iobase)
len = GetRecvByte(iobase, self); len = GetRecvByte(iobase, self);
IRDA_DEBUG(2, "%s(): len=%x\n", __FUNCTION__, len); IRDA_DEBUG(2, "%s(): len=%x\n", __func__, len);
if ((len - 4) < 2) { if ((len - 4) < 2) {
self->stats.rx_dropped++; self->stats.rx_dropped++;
@ -1302,7 +1302,7 @@ static int RxTimerHandler(struct via_ircc_cb *self, int iobase)
skb_put(skb, len - 4); skb_put(skb, len - 4);
skb_copy_to_linear_data(skb, self->rx_buff.data, len - 4); skb_copy_to_linear_data(skb, self->rx_buff.data, len - 4);
IRDA_DEBUG(2, "%s(): len=%x.head=%x\n", __FUNCTION__, IRDA_DEBUG(2, "%s(): len=%x.head=%x\n", __func__,
len - 4, st_fifo->head); len - 4, st_fifo->head);
// Move to next frame // Move to next frame
@ -1318,7 +1318,7 @@ static int RxTimerHandler(struct via_ircc_cb *self, int iobase)
IRDA_DEBUG(2, IRDA_DEBUG(2,
"%s(): End of upload HostStatus=%x,RxStatus=%x\n", "%s(): End of upload HostStatus=%x,RxStatus=%x\n",
__FUNCTION__, __func__,
GetHostStatus(iobase), GetRXStatus(iobase)); GetHostStatus(iobase), GetRXStatus(iobase));
/* /*
@ -1358,7 +1358,7 @@ static irqreturn_t via_ircc_interrupt(int dummy, void *dev_id)
iHostIntType = GetHostStatus(iobase); iHostIntType = GetHostStatus(iobase);
IRDA_DEBUG(4, "%s(): iHostIntType %02x: %s %s %s %02x\n", IRDA_DEBUG(4, "%s(): iHostIntType %02x: %s %s %s %02x\n",
__FUNCTION__, iHostIntType, __func__, iHostIntType,
(iHostIntType & 0x40) ? "Timer" : "", (iHostIntType & 0x40) ? "Timer" : "",
(iHostIntType & 0x20) ? "Tx" : "", (iHostIntType & 0x20) ? "Tx" : "",
(iHostIntType & 0x10) ? "Rx" : "", (iHostIntType & 0x10) ? "Rx" : "",
@ -1388,7 +1388,7 @@ static irqreturn_t via_ircc_interrupt(int dummy, void *dev_id)
iTxIntType = GetTXStatus(iobase); iTxIntType = GetTXStatus(iobase);
IRDA_DEBUG(4, "%s(): iTxIntType %02x: %s %s %s %s\n", IRDA_DEBUG(4, "%s(): iTxIntType %02x: %s %s %s %s\n",
__FUNCTION__, iTxIntType, __func__, iTxIntType,
(iTxIntType & 0x08) ? "FIFO underr." : "", (iTxIntType & 0x08) ? "FIFO underr." : "",
(iTxIntType & 0x04) ? "EOM" : "", (iTxIntType & 0x04) ? "EOM" : "",
(iTxIntType & 0x02) ? "FIFO ready" : "", (iTxIntType & 0x02) ? "FIFO ready" : "",
@ -1412,7 +1412,7 @@ static irqreturn_t via_ircc_interrupt(int dummy, void *dev_id)
iRxIntType = GetRXStatus(iobase); iRxIntType = GetRXStatus(iobase);
IRDA_DEBUG(4, "%s(): iRxIntType %02x: %s %s %s %s %s %s %s\n", IRDA_DEBUG(4, "%s(): iRxIntType %02x: %s %s %s %s %s %s %s\n",
__FUNCTION__, iRxIntType, __func__, iRxIntType,
(iRxIntType & 0x80) ? "PHY err." : "", (iRxIntType & 0x80) ? "PHY err." : "",
(iRxIntType & 0x40) ? "CRC err" : "", (iRxIntType & 0x40) ? "CRC err" : "",
(iRxIntType & 0x20) ? "FIFO overr." : "", (iRxIntType & 0x20) ? "FIFO overr." : "",
@ -1421,7 +1421,7 @@ static irqreturn_t via_ircc_interrupt(int dummy, void *dev_id)
(iRxIntType & 0x02) ? "RxMaxLen" : "", (iRxIntType & 0x02) ? "RxMaxLen" : "",
(iRxIntType & 0x01) ? "SIR bad" : ""); (iRxIntType & 0x01) ? "SIR bad" : "");
if (!iRxIntType) if (!iRxIntType)
IRDA_DEBUG(3, "%s(): RxIRQ =0\n", __FUNCTION__); IRDA_DEBUG(3, "%s(): RxIRQ =0\n", __func__);
if (iRxIntType & 0x10) { if (iRxIntType & 0x10) {
if (via_ircc_dma_receive_complete(self, iobase)) { if (via_ircc_dma_receive_complete(self, iobase)) {
@ -1431,7 +1431,7 @@ static irqreturn_t via_ircc_interrupt(int dummy, void *dev_id)
} // No ERR } // No ERR
else { //ERR else { //ERR
IRDA_DEBUG(4, "%s(): RxIRQ ERR:iRxIntType=%x,HostIntType=%x,CurCount=%x,RxLastCount=%x_____\n", IRDA_DEBUG(4, "%s(): RxIRQ ERR:iRxIntType=%x,HostIntType=%x,CurCount=%x,RxLastCount=%x_____\n",
__FUNCTION__, iRxIntType, iHostIntType, __func__, iRxIntType, iHostIntType,
RxCurCount(iobase, self), RxCurCount(iobase, self),
self->RxLastCount); self->RxLastCount);
@ -1456,7 +1456,7 @@ static void hwreset(struct via_ircc_cb *self)
int iobase; int iobase;
iobase = self->io.fir_base; iobase = self->io.fir_base;
IRDA_DEBUG(3, "%s()\n", __FUNCTION__); IRDA_DEBUG(3, "%s()\n", __func__);
ResetChip(iobase, 5); ResetChip(iobase, 5);
EnableDMA(iobase, OFF); EnableDMA(iobase, OFF);
@ -1501,7 +1501,7 @@ static int via_ircc_is_receiving(struct via_ircc_cb *self)
if (CkRxRecv(iobase, self)) if (CkRxRecv(iobase, self))
status = TRUE; status = TRUE;
IRDA_DEBUG(2, "%s(): status=%x....\n", __FUNCTION__, status); IRDA_DEBUG(2, "%s(): status=%x....\n", __func__, status);
return status; return status;
} }
@ -1519,7 +1519,7 @@ static int via_ircc_net_open(struct net_device *dev)
int iobase; int iobase;
char hwname[32]; char hwname[32];
IRDA_DEBUG(3, "%s()\n", __FUNCTION__); IRDA_DEBUG(3, "%s()\n", __func__);
IRDA_ASSERT(dev != NULL, return -1;); IRDA_ASSERT(dev != NULL, return -1;);
self = (struct via_ircc_cb *) dev->priv; self = (struct via_ircc_cb *) dev->priv;
@ -1586,7 +1586,7 @@ static int via_ircc_net_close(struct net_device *dev)
struct via_ircc_cb *self; struct via_ircc_cb *self;
int iobase; int iobase;
IRDA_DEBUG(3, "%s()\n", __FUNCTION__); IRDA_DEBUG(3, "%s()\n", __func__);
IRDA_ASSERT(dev != NULL, return -1;); IRDA_ASSERT(dev != NULL, return -1;);
self = (struct via_ircc_cb *) dev->priv; self = (struct via_ircc_cb *) dev->priv;
@ -1630,7 +1630,7 @@ static int via_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq,
IRDA_ASSERT(dev != NULL, return -1;); IRDA_ASSERT(dev != NULL, return -1;);
self = dev->priv; self = dev->priv;
IRDA_ASSERT(self != NULL, return -1;); IRDA_ASSERT(self != NULL, return -1;);
IRDA_DEBUG(1, "%s(), %s, (cmd=0x%X)\n", __FUNCTION__, dev->name, IRDA_DEBUG(1, "%s(), %s, (cmd=0x%X)\n", __func__, dev->name,
cmd); cmd);
/* Disable interrupts & save flags */ /* Disable interrupts & save flags */
spin_lock_irqsave(&self->lock, flags); spin_lock_irqsave(&self->lock, flags);

View file

@ -140,15 +140,15 @@ static void vlsi_ring_debug(struct vlsi_ring *r)
unsigned i; unsigned i;
printk(KERN_DEBUG "%s - ring %p / size %u / mask 0x%04x / len %u / dir %d / hw %p\n", printk(KERN_DEBUG "%s - ring %p / size %u / mask 0x%04x / len %u / dir %d / hw %p\n",
__FUNCTION__, r, r->size, r->mask, r->len, r->dir, r->rd[0].hw); __func__, r, r->size, r->mask, r->len, r->dir, r->rd[0].hw);
printk(KERN_DEBUG "%s - head = %d / tail = %d\n", __FUNCTION__, printk(KERN_DEBUG "%s - head = %d / tail = %d\n", __func__,
atomic_read(&r->head) & r->mask, atomic_read(&r->tail) & r->mask); atomic_read(&r->head) & r->mask, atomic_read(&r->tail) & r->mask);
for (i = 0; i < r->size; i++) { for (i = 0; i < r->size; i++) {
rd = &r->rd[i]; rd = &r->rd[i];
printk(KERN_DEBUG "%s - ring descr %u: ", __FUNCTION__, i); printk(KERN_DEBUG "%s - ring descr %u: ", __func__, i);
printk("skb=%p data=%p hw=%p\n", rd->skb, rd->buf, rd->hw); printk("skb=%p data=%p hw=%p\n", rd->skb, rd->buf, rd->hw);
printk(KERN_DEBUG "%s - hw: status=%02x count=%u addr=0x%08x\n", printk(KERN_DEBUG "%s - hw: status=%02x count=%u addr=0x%08x\n",
__FUNCTION__, (unsigned) rd_get_status(rd), __func__, (unsigned) rd_get_status(rd),
(unsigned) rd_get_count(rd), (unsigned) rd_get_addr(rd)); (unsigned) rd_get_count(rd), (unsigned) rd_get_addr(rd));
} }
} }
@ -435,7 +435,7 @@ static struct vlsi_ring *vlsi_alloc_ring(struct pci_dev *pdev, struct ring_descr
|| !(busaddr = pci_map_single(pdev, rd->buf, len, dir))) { || !(busaddr = pci_map_single(pdev, rd->buf, len, dir))) {
if (rd->buf) { if (rd->buf) {
IRDA_ERROR("%s: failed to create PCI-MAP for %p", IRDA_ERROR("%s: failed to create PCI-MAP for %p",
__FUNCTION__, rd->buf); __func__, rd->buf);
kfree(rd->buf); kfree(rd->buf);
rd->buf = NULL; rd->buf = NULL;
} }
@ -489,7 +489,7 @@ static int vlsi_create_hwif(vlsi_irda_dev_t *idev)
ringarea = pci_alloc_consistent(idev->pdev, HW_RING_AREA_SIZE, &idev->busaddr); ringarea = pci_alloc_consistent(idev->pdev, HW_RING_AREA_SIZE, &idev->busaddr);
if (!ringarea) { if (!ringarea) {
IRDA_ERROR("%s: insufficient memory for descriptor rings\n", IRDA_ERROR("%s: insufficient memory for descriptor rings\n",
__FUNCTION__); __func__);
goto out; goto out;
} }
memset(ringarea, 0, HW_RING_AREA_SIZE); memset(ringarea, 0, HW_RING_AREA_SIZE);
@ -564,7 +564,7 @@ static int vlsi_process_rx(struct vlsi_ring *r, struct ring_descr *rd)
crclen = (idev->mode==IFF_FIR) ? sizeof(u32) : sizeof(u16); crclen = (idev->mode==IFF_FIR) ? sizeof(u32) : sizeof(u16);
len -= crclen; /* remove trailing CRC */ len -= crclen; /* remove trailing CRC */
if (len <= 0) { if (len <= 0) {
IRDA_DEBUG(0, "%s: strange frame (len=%d)\n", __FUNCTION__, len); IRDA_DEBUG(0, "%s: strange frame (len=%d)\n", __func__, len);
ret |= VLSI_RX_DROP; ret |= VLSI_RX_DROP;
goto done; goto done;
} }
@ -579,14 +579,14 @@ static int vlsi_process_rx(struct vlsi_ring *r, struct ring_descr *rd)
*/ */
le16_to_cpus(rd->buf+len); le16_to_cpus(rd->buf+len);
if (irda_calc_crc16(INIT_FCS,rd->buf,len+crclen) != GOOD_FCS) { if (irda_calc_crc16(INIT_FCS,rd->buf,len+crclen) != GOOD_FCS) {
IRDA_DEBUG(0, "%s: crc error\n", __FUNCTION__); IRDA_DEBUG(0, "%s: crc error\n", __func__);
ret |= VLSI_RX_CRC; ret |= VLSI_RX_CRC;
goto done; goto done;
} }
} }
if (!rd->skb) { if (!rd->skb) {
IRDA_WARNING("%s: rx packet lost\n", __FUNCTION__); IRDA_WARNING("%s: rx packet lost\n", __func__);
ret |= VLSI_RX_DROP; ret |= VLSI_RX_DROP;
goto done; goto done;
} }
@ -617,7 +617,7 @@ static void vlsi_fill_rx(struct vlsi_ring *r)
for (rd = ring_last(r); rd != NULL; rd = ring_put(r)) { for (rd = ring_last(r); rd != NULL; rd = ring_put(r)) {
if (rd_is_active(rd)) { if (rd_is_active(rd)) {
IRDA_WARNING("%s: driver bug: rx descr race with hw\n", IRDA_WARNING("%s: driver bug: rx descr race with hw\n",
__FUNCTION__); __func__);
vlsi_ring_debug(r); vlsi_ring_debug(r);
break; break;
} }
@ -676,7 +676,7 @@ static void vlsi_rx_interrupt(struct net_device *ndev)
if (ring_first(r) == NULL) { if (ring_first(r) == NULL) {
/* we are in big trouble, if this should ever happen */ /* we are in big trouble, if this should ever happen */
IRDA_ERROR("%s: rx ring exhausted!\n", __FUNCTION__); IRDA_ERROR("%s: rx ring exhausted!\n", __func__);
vlsi_ring_debug(r); vlsi_ring_debug(r);
} }
else else
@ -697,7 +697,7 @@ static void vlsi_unarm_rx(vlsi_irda_dev_t *idev)
if (rd_is_active(rd)) { if (rd_is_active(rd)) {
rd_set_status(rd, 0); rd_set_status(rd, 0);
if (rd_get_count(rd)) { if (rd_get_count(rd)) {
IRDA_DEBUG(0, "%s - dropping rx packet\n", __FUNCTION__); IRDA_DEBUG(0, "%s - dropping rx packet\n", __func__);
ret = -VLSI_RX_DROP; ret = -VLSI_RX_DROP;
} }
rd_set_count(rd, 0); rd_set_count(rd, 0);
@ -772,7 +772,7 @@ static int vlsi_set_baud(vlsi_irda_dev_t *idev, unsigned iobase)
int fifocnt; int fifocnt;
baudrate = idev->new_baud; baudrate = idev->new_baud;
IRDA_DEBUG(2, "%s: %d -> %d\n", __FUNCTION__, idev->baud, idev->new_baud); IRDA_DEBUG(2, "%s: %d -> %d\n", __func__, idev->baud, idev->new_baud);
if (baudrate == 4000000) { if (baudrate == 4000000) {
mode = IFF_FIR; mode = IFF_FIR;
config = IRCFG_FIR; config = IRCFG_FIR;
@ -789,7 +789,7 @@ static int vlsi_set_baud(vlsi_irda_dev_t *idev, unsigned iobase)
switch(baudrate) { switch(baudrate) {
default: default:
IRDA_WARNING("%s: undefined baudrate %d - fallback to 9600!\n", IRDA_WARNING("%s: undefined baudrate %d - fallback to 9600!\n",
__FUNCTION__, baudrate); __func__, baudrate);
baudrate = 9600; baudrate = 9600;
/* fallthru */ /* fallthru */
case 2400: case 2400:
@ -806,7 +806,7 @@ static int vlsi_set_baud(vlsi_irda_dev_t *idev, unsigned iobase)
fifocnt = inw(iobase+VLSI_PIO_RCVBCNT) & RCVBCNT_MASK; fifocnt = inw(iobase+VLSI_PIO_RCVBCNT) & RCVBCNT_MASK;
if (fifocnt != 0) { if (fifocnt != 0) {
IRDA_DEBUG(0, "%s: rx fifo not empty(%d)\n", __FUNCTION__, fifocnt); IRDA_DEBUG(0, "%s: rx fifo not empty(%d)\n", __func__, fifocnt);
} }
outw(0, iobase+VLSI_PIO_IRENABLE); outw(0, iobase+VLSI_PIO_IRENABLE);
@ -830,14 +830,14 @@ static int vlsi_set_baud(vlsi_irda_dev_t *idev, unsigned iobase)
config ^= IRENABLE_SIR_ON; config ^= IRENABLE_SIR_ON;
if (config != (IRENABLE_PHYANDCLOCK|IRENABLE_ENRXST)) { if (config != (IRENABLE_PHYANDCLOCK|IRENABLE_ENRXST)) {
IRDA_WARNING("%s: failed to set %s mode!\n", __FUNCTION__, IRDA_WARNING("%s: failed to set %s mode!\n", __func__,
(mode==IFF_SIR)?"SIR":((mode==IFF_MIR)?"MIR":"FIR")); (mode==IFF_SIR)?"SIR":((mode==IFF_MIR)?"MIR":"FIR"));
ret = -1; ret = -1;
} }
else { else {
if (inw(iobase+VLSI_PIO_PHYCTL) != nphyctl) { if (inw(iobase+VLSI_PIO_PHYCTL) != nphyctl) {
IRDA_WARNING("%s: failed to apply baudrate %d\n", IRDA_WARNING("%s: failed to apply baudrate %d\n",
__FUNCTION__, baudrate); __func__, baudrate);
ret = -1; ret = -1;
} }
else { else {
@ -849,7 +849,7 @@ static int vlsi_set_baud(vlsi_irda_dev_t *idev, unsigned iobase)
} }
if (ret) if (ret)
vlsi_reg_debug(iobase,__FUNCTION__); vlsi_reg_debug(iobase,__func__);
return ret; return ret;
} }
@ -982,7 +982,7 @@ static int vlsi_hard_start_xmit(struct sk_buff *skb, struct net_device *ndev)
if (len >= r->len-5) if (len >= r->len-5)
IRDA_WARNING("%s: possible buffer overflow with SIR wrapping!\n", IRDA_WARNING("%s: possible buffer overflow with SIR wrapping!\n",
__FUNCTION__); __func__);
} }
else { else {
/* hw deals with MIR/FIR mode wrapping */ /* hw deals with MIR/FIR mode wrapping */
@ -1027,7 +1027,7 @@ static int vlsi_hard_start_xmit(struct sk_buff *skb, struct net_device *ndev)
fifocnt = inw(ndev->base_addr+VLSI_PIO_RCVBCNT) & RCVBCNT_MASK; fifocnt = inw(ndev->base_addr+VLSI_PIO_RCVBCNT) & RCVBCNT_MASK;
if (fifocnt != 0) { if (fifocnt != 0) {
IRDA_DEBUG(0, "%s: rx fifo not empty(%d)\n", __FUNCTION__, fifocnt); IRDA_DEBUG(0, "%s: rx fifo not empty(%d)\n", __func__, fifocnt);
} }
config = inw(iobase+VLSI_PIO_IRCFG); config = inw(iobase+VLSI_PIO_IRCFG);
@ -1040,7 +1040,7 @@ static int vlsi_hard_start_xmit(struct sk_buff *skb, struct net_device *ndev)
if (ring_put(r) == NULL) { if (ring_put(r) == NULL) {
netif_stop_queue(ndev); netif_stop_queue(ndev);
IRDA_DEBUG(3, "%s: tx ring full - queue stopped\n", __FUNCTION__); IRDA_DEBUG(3, "%s: tx ring full - queue stopped\n", __func__);
} }
spin_unlock_irqrestore(&idev->lock, flags); spin_unlock_irqrestore(&idev->lock, flags);
@ -1049,7 +1049,7 @@ static int vlsi_hard_start_xmit(struct sk_buff *skb, struct net_device *ndev)
drop_unlock: drop_unlock:
spin_unlock_irqrestore(&idev->lock, flags); spin_unlock_irqrestore(&idev->lock, flags);
drop: drop:
IRDA_WARNING("%s: dropping packet - %s\n", __FUNCTION__, msg); IRDA_WARNING("%s: dropping packet - %s\n", __func__, msg);
dev_kfree_skb_any(skb); dev_kfree_skb_any(skb);
idev->stats.tx_errors++; idev->stats.tx_errors++;
idev->stats.tx_dropped++; idev->stats.tx_dropped++;
@ -1106,7 +1106,7 @@ static void vlsi_tx_interrupt(struct net_device *ndev)
fifocnt = inw(iobase+VLSI_PIO_RCVBCNT) & RCVBCNT_MASK; fifocnt = inw(iobase+VLSI_PIO_RCVBCNT) & RCVBCNT_MASK;
if (fifocnt != 0) { if (fifocnt != 0) {
IRDA_DEBUG(0, "%s: rx fifo not empty(%d)\n", IRDA_DEBUG(0, "%s: rx fifo not empty(%d)\n",
__FUNCTION__, fifocnt); __func__, fifocnt);
} }
outw(config | IRCFG_ENTX, iobase+VLSI_PIO_IRCFG); outw(config | IRCFG_ENTX, iobase+VLSI_PIO_IRCFG);
} }
@ -1115,7 +1115,7 @@ static void vlsi_tx_interrupt(struct net_device *ndev)
if (netif_queue_stopped(ndev) && !idev->new_baud) { if (netif_queue_stopped(ndev) && !idev->new_baud) {
netif_wake_queue(ndev); netif_wake_queue(ndev);
IRDA_DEBUG(3, "%s: queue awoken\n", __FUNCTION__); IRDA_DEBUG(3, "%s: queue awoken\n", __func__);
} }
} }
@ -1138,7 +1138,7 @@ static void vlsi_unarm_tx(vlsi_irda_dev_t *idev)
dev_kfree_skb_any(rd->skb); dev_kfree_skb_any(rd->skb);
rd->skb = NULL; rd->skb = NULL;
} }
IRDA_DEBUG(0, "%s - dropping tx packet\n", __FUNCTION__); IRDA_DEBUG(0, "%s - dropping tx packet\n", __func__);
ret = -VLSI_TX_DROP; ret = -VLSI_TX_DROP;
} }
else else
@ -1188,7 +1188,7 @@ static int vlsi_start_clock(struct pci_dev *pdev)
if (count < 3) { if (count < 3) {
if (clksrc == 1) { /* explicitly asked for PLL hence bail out */ if (clksrc == 1) { /* explicitly asked for PLL hence bail out */
IRDA_ERROR("%s: no PLL or failed to lock!\n", IRDA_ERROR("%s: no PLL or failed to lock!\n",
__FUNCTION__); __func__);
clkctl = CLKCTL_CLKSTP; clkctl = CLKCTL_CLKSTP;
pci_write_config_byte(pdev, VLSI_PCI_CLKCTL, clkctl); pci_write_config_byte(pdev, VLSI_PCI_CLKCTL, clkctl);
return -1; return -1;
@ -1197,7 +1197,7 @@ static int vlsi_start_clock(struct pci_dev *pdev)
clksrc = 3; /* fallback to 40MHz XCLK (OB800) */ clksrc = 3; /* fallback to 40MHz XCLK (OB800) */
IRDA_DEBUG(0, "%s: PLL not locked, fallback to clksrc=%d\n", IRDA_DEBUG(0, "%s: PLL not locked, fallback to clksrc=%d\n",
__FUNCTION__, clksrc); __func__, clksrc);
} }
else else
clksrc = 1; /* got successful PLL lock */ clksrc = 1; /* got successful PLL lock */
@ -1269,7 +1269,7 @@ static int vlsi_init_chip(struct pci_dev *pdev)
/* start the clock and clean the registers */ /* start the clock and clean the registers */
if (vlsi_start_clock(pdev)) { if (vlsi_start_clock(pdev)) {
IRDA_ERROR("%s: no valid clock source\n", __FUNCTION__); IRDA_ERROR("%s: no valid clock source\n", __func__);
return -1; return -1;
} }
iobase = ndev->base_addr; iobase = ndev->base_addr;
@ -1386,7 +1386,7 @@ static void vlsi_tx_timeout(struct net_device *ndev)
vlsi_irda_dev_t *idev = ndev->priv; vlsi_irda_dev_t *idev = ndev->priv;
vlsi_reg_debug(ndev->base_addr, __FUNCTION__); vlsi_reg_debug(ndev->base_addr, __func__);
vlsi_ring_debug(idev->tx_ring); vlsi_ring_debug(idev->tx_ring);
if (netif_running(ndev)) if (netif_running(ndev))
@ -1401,7 +1401,7 @@ static void vlsi_tx_timeout(struct net_device *ndev)
if (vlsi_start_hw(idev)) if (vlsi_start_hw(idev))
IRDA_ERROR("%s: failed to restart hw - %s(%s) unusable!\n", IRDA_ERROR("%s: failed to restart hw - %s(%s) unusable!\n",
__FUNCTION__, pci_name(idev->pdev), ndev->name); __func__, pci_name(idev->pdev), ndev->name);
else else
netif_start_queue(ndev); netif_start_queue(ndev);
} }
@ -1446,7 +1446,7 @@ static int vlsi_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd)
break; break;
default: default:
IRDA_WARNING("%s: notsupp - cmd=%04x\n", IRDA_WARNING("%s: notsupp - cmd=%04x\n",
__FUNCTION__, cmd); __func__, cmd);
ret = -EOPNOTSUPP; ret = -EOPNOTSUPP;
} }
@ -1491,7 +1491,7 @@ static irqreturn_t vlsi_interrupt(int irq, void *dev_instance)
if (boguscount <= 0) if (boguscount <= 0)
IRDA_MESSAGE("%s: too much work in interrupt!\n", IRDA_MESSAGE("%s: too much work in interrupt!\n",
__FUNCTION__); __func__);
return IRQ_RETVAL(handled); return IRQ_RETVAL(handled);
} }
@ -1504,7 +1504,7 @@ static int vlsi_open(struct net_device *ndev)
char hwname[32]; char hwname[32];
if (pci_request_regions(idev->pdev, drivername)) { if (pci_request_regions(idev->pdev, drivername)) {
IRDA_WARNING("%s: io resource busy\n", __FUNCTION__); IRDA_WARNING("%s: io resource busy\n", __func__);
goto errout; goto errout;
} }
ndev->base_addr = pci_resource_start(idev->pdev,0); ndev->base_addr = pci_resource_start(idev->pdev,0);
@ -1519,7 +1519,7 @@ static int vlsi_open(struct net_device *ndev)
if (request_irq(ndev->irq, vlsi_interrupt, IRQF_SHARED, if (request_irq(ndev->irq, vlsi_interrupt, IRQF_SHARED,
drivername, ndev)) { drivername, ndev)) {
IRDA_WARNING("%s: couldn't get IRQ: %d\n", IRDA_WARNING("%s: couldn't get IRQ: %d\n",
__FUNCTION__, ndev->irq); __func__, ndev->irq);
goto errout_io; goto errout_io;
} }
@ -1540,7 +1540,7 @@ static int vlsi_open(struct net_device *ndev)
netif_start_queue(ndev); netif_start_queue(ndev);
IRDA_MESSAGE("%s: device %s operational\n", __FUNCTION__, ndev->name); IRDA_MESSAGE("%s: device %s operational\n", __func__, ndev->name);
return 0; return 0;
@ -1574,7 +1574,7 @@ static int vlsi_close(struct net_device *ndev)
pci_release_regions(idev->pdev); pci_release_regions(idev->pdev);
IRDA_MESSAGE("%s: device %s stopped\n", __FUNCTION__, ndev->name); IRDA_MESSAGE("%s: device %s stopped\n", __func__, ndev->name);
return 0; return 0;
} }
@ -1593,7 +1593,7 @@ static int vlsi_irda_init(struct net_device *ndev)
if (pci_set_dma_mask(pdev,DMA_MASK_USED_BY_HW) if (pci_set_dma_mask(pdev,DMA_MASK_USED_BY_HW)
|| pci_set_dma_mask(pdev,DMA_MASK_MSTRPAGE)) { || pci_set_dma_mask(pdev,DMA_MASK_MSTRPAGE)) {
IRDA_ERROR("%s: aborting due to PCI BM-DMA address limitations\n", __FUNCTION__); IRDA_ERROR("%s: aborting due to PCI BM-DMA address limitations\n", __func__);
return -1; return -1;
} }
@ -1645,14 +1645,14 @@ vlsi_irda_probe(struct pci_dev *pdev, const struct pci_device_id *id)
if ( !pci_resource_start(pdev,0) if ( !pci_resource_start(pdev,0)
|| !(pci_resource_flags(pdev,0) & IORESOURCE_IO) ) { || !(pci_resource_flags(pdev,0) & IORESOURCE_IO) ) {
IRDA_ERROR("%s: bar 0 invalid", __FUNCTION__); IRDA_ERROR("%s: bar 0 invalid", __func__);
goto out_disable; goto out_disable;
} }
ndev = alloc_irdadev(sizeof(*idev)); ndev = alloc_irdadev(sizeof(*idev));
if (ndev==NULL) { if (ndev==NULL) {
IRDA_ERROR("%s: Unable to allocate device memory.\n", IRDA_ERROR("%s: Unable to allocate device memory.\n",
__FUNCTION__); __func__);
goto out_disable; goto out_disable;
} }
@ -1667,7 +1667,7 @@ vlsi_irda_probe(struct pci_dev *pdev, const struct pci_device_id *id)
goto out_freedev; goto out_freedev;
if (register_netdev(ndev) < 0) { if (register_netdev(ndev) < 0) {
IRDA_ERROR("%s: register_netdev failed\n", __FUNCTION__); IRDA_ERROR("%s: register_netdev failed\n", __func__);
goto out_freedev; goto out_freedev;
} }
@ -1678,7 +1678,7 @@ vlsi_irda_probe(struct pci_dev *pdev, const struct pci_device_id *id)
vlsi_proc_root, VLSI_PROC_FOPS, ndev); vlsi_proc_root, VLSI_PROC_FOPS, ndev);
if (!ent) { if (!ent) {
IRDA_WARNING("%s: failed to create proc entry\n", IRDA_WARNING("%s: failed to create proc entry\n",
__FUNCTION__); __func__);
} else { } else {
ent->size = 0; ent->size = 0;
} }
@ -1745,7 +1745,7 @@ static int vlsi_irda_suspend(struct pci_dev *pdev, pm_message_t state)
if (!ndev) { if (!ndev) {
IRDA_ERROR("%s - %s: no netdevice \n", IRDA_ERROR("%s - %s: no netdevice \n",
__FUNCTION__, pci_name(pdev)); __func__, pci_name(pdev));
return 0; return 0;
} }
idev = ndev->priv; idev = ndev->priv;
@ -1756,7 +1756,7 @@ static int vlsi_irda_suspend(struct pci_dev *pdev, pm_message_t state)
pdev->current_state = state.event; pdev->current_state = state.event;
} }
else else
IRDA_ERROR("%s - %s: invalid suspend request %u -> %u\n", __FUNCTION__, pci_name(pdev), pdev->current_state, state.event); IRDA_ERROR("%s - %s: invalid suspend request %u -> %u\n", __func__, pci_name(pdev), pdev->current_state, state.event);
mutex_unlock(&idev->mtx); mutex_unlock(&idev->mtx);
return 0; return 0;
} }
@ -1784,7 +1784,7 @@ static int vlsi_irda_resume(struct pci_dev *pdev)
if (!ndev) { if (!ndev) {
IRDA_ERROR("%s - %s: no netdevice \n", IRDA_ERROR("%s - %s: no netdevice \n",
__FUNCTION__, pci_name(pdev)); __func__, pci_name(pdev));
return 0; return 0;
} }
idev = ndev->priv; idev = ndev->priv;
@ -1792,7 +1792,7 @@ static int vlsi_irda_resume(struct pci_dev *pdev)
if (pdev->current_state == 0) { if (pdev->current_state == 0) {
mutex_unlock(&idev->mtx); mutex_unlock(&idev->mtx);
IRDA_WARNING("%s - %s: already resumed\n", IRDA_WARNING("%s - %s: already resumed\n",
__FUNCTION__, pci_name(pdev)); __func__, pci_name(pdev));
return 0; return 0;
} }
@ -1811,7 +1811,7 @@ static int vlsi_irda_resume(struct pci_dev *pdev)
* now we explicitly set pdev->current_state = 0 after enabling the * now we explicitly set pdev->current_state = 0 after enabling the
* device and independently resume_ok should catch any garbage config. * device and independently resume_ok should catch any garbage config.
*/ */
IRDA_WARNING("%s - hm, nothing to resume?\n", __FUNCTION__); IRDA_WARNING("%s - hm, nothing to resume?\n", __func__);
mutex_unlock(&idev->mtx); mutex_unlock(&idev->mtx);
return 0; return 0;
} }

View file

@ -617,7 +617,7 @@ static inline void rd_set_addr_status(struct ring_descr *rd, dma_addr_t a, u8 s)
*/ */
if ((a & ~DMA_MASK_MSTRPAGE)>>24 != MSTRPAGE_VALUE) { if ((a & ~DMA_MASK_MSTRPAGE)>>24 != MSTRPAGE_VALUE) {
IRDA_ERROR("%s: pci busaddr inconsistency!\n", __FUNCTION__); IRDA_ERROR("%s: pci busaddr inconsistency!\n", __func__);
dump_stack(); dump_stack();
return; return;
} }

View file

@ -114,7 +114,7 @@ static int __init w83977af_init(void)
{ {
int i; int i;
IRDA_DEBUG(0, "%s()\n", __FUNCTION__ ); IRDA_DEBUG(0, "%s()\n", __func__ );
for (i=0; (io[i] < 2000) && (i < ARRAY_SIZE(dev_self)); i++) { for (i=0; (io[i] < 2000) && (i < ARRAY_SIZE(dev_self)); i++) {
if (w83977af_open(i, io[i], irq[i], dma[i]) == 0) if (w83977af_open(i, io[i], irq[i], dma[i]) == 0)
@ -133,7 +133,7 @@ static void __exit w83977af_cleanup(void)
{ {
int i; int i;
IRDA_DEBUG(4, "%s()\n", __FUNCTION__ ); IRDA_DEBUG(4, "%s()\n", __func__ );
for (i=0; i < ARRAY_SIZE(dev_self); i++) { for (i=0; i < ARRAY_SIZE(dev_self); i++) {
if (dev_self[i]) if (dev_self[i])
@ -154,12 +154,12 @@ int w83977af_open(int i, unsigned int iobase, unsigned int irq,
struct w83977af_ir *self; struct w83977af_ir *self;
int err; int err;
IRDA_DEBUG(0, "%s()\n", __FUNCTION__ ); IRDA_DEBUG(0, "%s()\n", __func__ );
/* Lock the port that we need */ /* Lock the port that we need */
if (!request_region(iobase, CHIP_IO_EXTENT, driver_name)) { if (!request_region(iobase, CHIP_IO_EXTENT, driver_name)) {
IRDA_DEBUG(0, "%s(), can't get iobase of 0x%03x\n", IRDA_DEBUG(0, "%s(), can't get iobase of 0x%03x\n",
__FUNCTION__ , iobase); __func__ , iobase);
return -ENODEV; return -ENODEV;
} }
@ -241,7 +241,7 @@ int w83977af_open(int i, unsigned int iobase, unsigned int irq,
err = register_netdev(dev); err = register_netdev(dev);
if (err) { if (err) {
IRDA_ERROR("%s(), register_netdevice() failed!\n", __FUNCTION__); IRDA_ERROR("%s(), register_netdevice() failed!\n", __func__);
goto err_out3; goto err_out3;
} }
IRDA_MESSAGE("IrDA: Registered device %s\n", dev->name); IRDA_MESSAGE("IrDA: Registered device %s\n", dev->name);
@ -273,7 +273,7 @@ static int w83977af_close(struct w83977af_ir *self)
{ {
int iobase; int iobase;
IRDA_DEBUG(0, "%s()\n", __FUNCTION__ ); IRDA_DEBUG(0, "%s()\n", __func__ );
iobase = self->io.fir_base; iobase = self->io.fir_base;
@ -294,7 +294,7 @@ static int w83977af_close(struct w83977af_ir *self)
/* Release the PORT that this driver is using */ /* Release the PORT that this driver is using */
IRDA_DEBUG(0 , "%s(), Releasing Region %03x\n", IRDA_DEBUG(0 , "%s(), Releasing Region %03x\n",
__FUNCTION__ , self->io.fir_base); __func__ , self->io.fir_base);
release_region(self->io.fir_base, self->io.fir_ext); release_region(self->io.fir_base, self->io.fir_ext);
if (self->tx_buff.head) if (self->tx_buff.head)
@ -316,7 +316,7 @@ int w83977af_probe( int iobase, int irq, int dma)
int i; int i;
for (i=0; i < 2; i++) { for (i=0; i < 2; i++) {
IRDA_DEBUG( 0, "%s()\n", __FUNCTION__ ); IRDA_DEBUG( 0, "%s()\n", __func__ );
#ifdef CONFIG_USE_W977_PNP #ifdef CONFIG_USE_W977_PNP
/* Enter PnP configuration mode */ /* Enter PnP configuration mode */
w977_efm_enter(efbase[i]); w977_efm_enter(efbase[i]);
@ -403,7 +403,7 @@ int w83977af_probe( int iobase, int irq, int dma)
return 0; return 0;
} else { } else {
/* Try next extented function register address */ /* Try next extented function register address */
IRDA_DEBUG( 0, "%s(), Wrong chip version", __FUNCTION__ ); IRDA_DEBUG( 0, "%s(), Wrong chip version", __func__ );
} }
} }
return -1; return -1;
@ -439,19 +439,19 @@ void w83977af_change_speed(struct w83977af_ir *self, __u32 speed)
case 115200: outb(0x01, iobase+ABLL); break; case 115200: outb(0x01, iobase+ABLL); break;
case 576000: case 576000:
ir_mode = HCR_MIR_576; ir_mode = HCR_MIR_576;
IRDA_DEBUG(0, "%s(), handling baud of 576000\n", __FUNCTION__ ); IRDA_DEBUG(0, "%s(), handling baud of 576000\n", __func__ );
break; break;
case 1152000: case 1152000:
ir_mode = HCR_MIR_1152; ir_mode = HCR_MIR_1152;
IRDA_DEBUG(0, "%s(), handling baud of 1152000\n", __FUNCTION__ ); IRDA_DEBUG(0, "%s(), handling baud of 1152000\n", __func__ );
break; break;
case 4000000: case 4000000:
ir_mode = HCR_FIR; ir_mode = HCR_FIR;
IRDA_DEBUG(0, "%s(), handling baud of 4000000\n", __FUNCTION__ ); IRDA_DEBUG(0, "%s(), handling baud of 4000000\n", __func__ );
break; break;
default: default:
ir_mode = HCR_FIR; ir_mode = HCR_FIR;
IRDA_DEBUG(0, "%s(), unknown baud rate of %d\n", __FUNCTION__ , speed); IRDA_DEBUG(0, "%s(), unknown baud rate of %d\n", __func__ , speed);
break; break;
} }
@ -501,7 +501,7 @@ int w83977af_hard_xmit(struct sk_buff *skb, struct net_device *dev)
iobase = self->io.fir_base; iobase = self->io.fir_base;
IRDA_DEBUG(4, "%s(%ld), skb->len=%d\n", __FUNCTION__ , jiffies, IRDA_DEBUG(4, "%s(%ld), skb->len=%d\n", __func__ , jiffies,
(int) skb->len); (int) skb->len);
/* Lock transmit buffer */ /* Lock transmit buffer */
@ -549,7 +549,7 @@ int w83977af_hard_xmit(struct sk_buff *skb, struct net_device *dev)
outb(ICR_ETMRI, iobase+ICR); outb(ICR_ETMRI, iobase+ICR);
} else { } else {
#endif #endif
IRDA_DEBUG(4, "%s(%ld), mtt=%d\n", __FUNCTION__ , jiffies, mtt); IRDA_DEBUG(4, "%s(%ld), mtt=%d\n", __func__ , jiffies, mtt);
if (mtt) if (mtt)
udelay(mtt); udelay(mtt);
@ -591,7 +591,7 @@ static void w83977af_dma_write(struct w83977af_ir *self, int iobase)
unsigned long flags; unsigned long flags;
__u8 hcr; __u8 hcr;
#endif #endif
IRDA_DEBUG(4, "%s(), len=%d\n", __FUNCTION__ , self->tx_buff.len); IRDA_DEBUG(4, "%s(), len=%d\n", __func__ , self->tx_buff.len);
/* Save current set */ /* Save current set */
set = inb(iobase+SSR); set = inb(iobase+SSR);
@ -643,7 +643,7 @@ static int w83977af_pio_write(int iobase, __u8 *buf, int len, int fifo_size)
int actual = 0; int actual = 0;
__u8 set; __u8 set;
IRDA_DEBUG(4, "%s()\n", __FUNCTION__ ); IRDA_DEBUG(4, "%s()\n", __func__ );
/* Save current bank */ /* Save current bank */
set = inb(iobase+SSR); set = inb(iobase+SSR);
@ -651,11 +651,11 @@ static int w83977af_pio_write(int iobase, __u8 *buf, int len, int fifo_size)
switch_bank(iobase, SET0); switch_bank(iobase, SET0);
if (!(inb_p(iobase+USR) & USR_TSRE)) { if (!(inb_p(iobase+USR) & USR_TSRE)) {
IRDA_DEBUG(4, IRDA_DEBUG(4,
"%s(), warning, FIFO not empty yet!\n", __FUNCTION__ ); "%s(), warning, FIFO not empty yet!\n", __func__ );
fifo_size -= 17; fifo_size -= 17;
IRDA_DEBUG(4, "%s(), %d bytes left in tx fifo\n", IRDA_DEBUG(4, "%s(), %d bytes left in tx fifo\n",
__FUNCTION__ , fifo_size); __func__ , fifo_size);
} }
/* Fill FIFO with current frame */ /* Fill FIFO with current frame */
@ -665,7 +665,7 @@ static int w83977af_pio_write(int iobase, __u8 *buf, int len, int fifo_size)
} }
IRDA_DEBUG(4, "%s(), fifo_size %d ; %d sent of %d\n", IRDA_DEBUG(4, "%s(), fifo_size %d ; %d sent of %d\n",
__FUNCTION__ , fifo_size, actual, len); __func__ , fifo_size, actual, len);
/* Restore bank */ /* Restore bank */
outb(set, iobase+SSR); outb(set, iobase+SSR);
@ -685,7 +685,7 @@ static void w83977af_dma_xmit_complete(struct w83977af_ir *self)
int iobase; int iobase;
__u8 set; __u8 set;
IRDA_DEBUG(4, "%s(%ld)\n", __FUNCTION__ , jiffies); IRDA_DEBUG(4, "%s(%ld)\n", __func__ , jiffies);
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
@ -700,7 +700,7 @@ static void w83977af_dma_xmit_complete(struct w83977af_ir *self)
/* Check for underrrun! */ /* Check for underrrun! */
if (inb(iobase+AUDR) & AUDR_UNDR) { if (inb(iobase+AUDR) & AUDR_UNDR) {
IRDA_DEBUG(0, "%s(), Transmit underrun!\n", __FUNCTION__ ); IRDA_DEBUG(0, "%s(), Transmit underrun!\n", __func__ );
self->stats.tx_errors++; self->stats.tx_errors++;
self->stats.tx_fifo_errors++; self->stats.tx_fifo_errors++;
@ -741,7 +741,7 @@ int w83977af_dma_receive(struct w83977af_ir *self)
#endif #endif
IRDA_ASSERT(self != NULL, return -1;); IRDA_ASSERT(self != NULL, return -1;);
IRDA_DEBUG(4, "%s\n", __FUNCTION__ ); IRDA_DEBUG(4, "%s\n", __func__ );
iobase= self->io.fir_base; iobase= self->io.fir_base;
@ -812,7 +812,7 @@ int w83977af_dma_receive_complete(struct w83977af_ir *self)
__u8 set; __u8 set;
__u8 status; __u8 status;
IRDA_DEBUG(4, "%s\n", __FUNCTION__ ); IRDA_DEBUG(4, "%s\n", __func__ );
st_fifo = &self->st_fifo; st_fifo = &self->st_fifo;
@ -892,7 +892,7 @@ int w83977af_dma_receive_complete(struct w83977af_ir *self)
skb = dev_alloc_skb(len+1); skb = dev_alloc_skb(len+1);
if (skb == NULL) { if (skb == NULL) {
printk(KERN_INFO printk(KERN_INFO
"%s(), memory squeeze, dropping frame.\n", __FUNCTION__); "%s(), memory squeeze, dropping frame.\n", __func__);
/* Restore set register */ /* Restore set register */
outb(set, iobase+SSR); outb(set, iobase+SSR);
@ -943,7 +943,7 @@ static void w83977af_pio_receive(struct w83977af_ir *self)
__u8 byte = 0x00; __u8 byte = 0x00;
int iobase; int iobase;
IRDA_DEBUG(4, "%s()\n", __FUNCTION__ ); IRDA_DEBUG(4, "%s()\n", __func__ );
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
@ -970,7 +970,7 @@ static __u8 w83977af_sir_interrupt(struct w83977af_ir *self, int isr)
__u8 set; __u8 set;
int iobase; int iobase;
IRDA_DEBUG(4, "%s(), isr=%#x\n", __FUNCTION__ , isr); IRDA_DEBUG(4, "%s(), isr=%#x\n", __func__ , isr);
iobase = self->io.fir_base; iobase = self->io.fir_base;
/* Transmit FIFO low on data */ /* Transmit FIFO low on data */
@ -1007,7 +1007,7 @@ static __u8 w83977af_sir_interrupt(struct w83977af_ir *self, int isr)
/* Check if we need to change the speed? */ /* Check if we need to change the speed? */
if (self->new_speed) { if (self->new_speed) {
IRDA_DEBUG(2, IRDA_DEBUG(2,
"%s(), Changing speed!\n", __FUNCTION__ ); "%s(), Changing speed!\n", __func__ );
w83977af_change_speed(self, self->new_speed); w83977af_change_speed(self, self->new_speed);
self->new_speed = 0; self->new_speed = 0;
} }
@ -1189,7 +1189,7 @@ static int w83977af_net_open(struct net_device *dev)
char hwname[32]; char hwname[32];
__u8 set; __u8 set;
IRDA_DEBUG(0, "%s()\n", __FUNCTION__ ); IRDA_DEBUG(0, "%s()\n", __func__ );
IRDA_ASSERT(dev != NULL, return -1;); IRDA_ASSERT(dev != NULL, return -1;);
self = (struct w83977af_ir *) dev->priv; self = (struct w83977af_ir *) dev->priv;
@ -1252,7 +1252,7 @@ static int w83977af_net_close(struct net_device *dev)
int iobase; int iobase;
__u8 set; __u8 set;
IRDA_DEBUG(0, "%s()\n", __FUNCTION__ ); IRDA_DEBUG(0, "%s()\n", __func__ );
IRDA_ASSERT(dev != NULL, return -1;); IRDA_ASSERT(dev != NULL, return -1;);
@ -1307,7 +1307,7 @@ static int w83977af_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
IRDA_ASSERT(self != NULL, return -1;); IRDA_ASSERT(self != NULL, return -1;);
IRDA_DEBUG(2, "%s(), %s, (cmd=0x%X)\n", __FUNCTION__ , dev->name, cmd); IRDA_DEBUG(2, "%s(), %s, (cmd=0x%X)\n", __func__ , dev->name, cmd);
spin_lock_irqsave(&self->lock, flags); spin_lock_irqsave(&self->lock, flags);

View file

@ -55,7 +55,7 @@
#include <asm/system.h> #include <asm/system.h>
static char mv643xx_eth_driver_name[] = "mv643xx_eth"; static char mv643xx_eth_driver_name[] = "mv643xx_eth";
static char mv643xx_eth_driver_version[] = "1.1"; static char mv643xx_eth_driver_version[] = "1.2";
#define MV643XX_ETH_CHECKSUM_OFFLOAD_TX #define MV643XX_ETH_CHECKSUM_OFFLOAD_TX
#define MV643XX_ETH_NAPI #define MV643XX_ETH_NAPI
@ -90,12 +90,21 @@ static char mv643xx_eth_driver_version[] = "1.1";
#define PORT_SERIAL_CONTROL(p) (0x043c + ((p) << 10)) #define PORT_SERIAL_CONTROL(p) (0x043c + ((p) << 10))
#define PORT_STATUS(p) (0x0444 + ((p) << 10)) #define PORT_STATUS(p) (0x0444 + ((p) << 10))
#define TX_FIFO_EMPTY 0x00000400 #define TX_FIFO_EMPTY 0x00000400
#define TX_IN_PROGRESS 0x00000080
#define PORT_SPEED_MASK 0x00000030
#define PORT_SPEED_1000 0x00000010
#define PORT_SPEED_100 0x00000020
#define PORT_SPEED_10 0x00000000
#define FLOW_CONTROL_ENABLED 0x00000008
#define FULL_DUPLEX 0x00000004
#define LINK_UP 0x00000002
#define TXQ_COMMAND(p) (0x0448 + ((p) << 10)) #define TXQ_COMMAND(p) (0x0448 + ((p) << 10))
#define TXQ_FIX_PRIO_CONF(p) (0x044c + ((p) << 10)) #define TXQ_FIX_PRIO_CONF(p) (0x044c + ((p) << 10))
#define TX_BW_RATE(p) (0x0450 + ((p) << 10)) #define TX_BW_RATE(p) (0x0450 + ((p) << 10))
#define TX_BW_MTU(p) (0x0458 + ((p) << 10)) #define TX_BW_MTU(p) (0x0458 + ((p) << 10))
#define TX_BW_BURST(p) (0x045c + ((p) << 10)) #define TX_BW_BURST(p) (0x045c + ((p) << 10))
#define INT_CAUSE(p) (0x0460 + ((p) << 10)) #define INT_CAUSE(p) (0x0460 + ((p) << 10))
#define INT_TX_END_0 0x00080000
#define INT_TX_END 0x07f80000 #define INT_TX_END 0x07f80000
#define INT_RX 0x0007fbfc #define INT_RX 0x0007fbfc
#define INT_EXT 0x00000002 #define INT_EXT 0x00000002
@ -127,21 +136,21 @@ static char mv643xx_eth_driver_version[] = "1.1";
/* /*
* SDMA configuration register. * SDMA configuration register.
*/ */
#define RX_BURST_SIZE_4_64BIT (2 << 1) #define RX_BURST_SIZE_16_64BIT (4 << 1)
#define BLM_RX_NO_SWAP (1 << 4) #define BLM_RX_NO_SWAP (1 << 4)
#define BLM_TX_NO_SWAP (1 << 5) #define BLM_TX_NO_SWAP (1 << 5)
#define TX_BURST_SIZE_4_64BIT (2 << 22) #define TX_BURST_SIZE_16_64BIT (4 << 22)
#if defined(__BIG_ENDIAN) #if defined(__BIG_ENDIAN)
#define PORT_SDMA_CONFIG_DEFAULT_VALUE \ #define PORT_SDMA_CONFIG_DEFAULT_VALUE \
RX_BURST_SIZE_4_64BIT | \ RX_BURST_SIZE_16_64BIT | \
TX_BURST_SIZE_4_64BIT TX_BURST_SIZE_16_64BIT
#elif defined(__LITTLE_ENDIAN) #elif defined(__LITTLE_ENDIAN)
#define PORT_SDMA_CONFIG_DEFAULT_VALUE \ #define PORT_SDMA_CONFIG_DEFAULT_VALUE \
RX_BURST_SIZE_4_64BIT | \ RX_BURST_SIZE_16_64BIT | \
BLM_RX_NO_SWAP | \ BLM_RX_NO_SWAP | \
BLM_TX_NO_SWAP | \ BLM_TX_NO_SWAP | \
TX_BURST_SIZE_4_64BIT TX_BURST_SIZE_16_64BIT
#else #else
#error One of __BIG_ENDIAN or __LITTLE_ENDIAN must be defined #error One of __BIG_ENDIAN or __LITTLE_ENDIAN must be defined
#endif #endif
@ -153,9 +162,7 @@ static char mv643xx_eth_driver_version[] = "1.1";
#define SET_MII_SPEED_TO_100 (1 << 24) #define SET_MII_SPEED_TO_100 (1 << 24)
#define SET_GMII_SPEED_TO_1000 (1 << 23) #define SET_GMII_SPEED_TO_1000 (1 << 23)
#define SET_FULL_DUPLEX_MODE (1 << 21) #define SET_FULL_DUPLEX_MODE (1 << 21)
#define MAX_RX_PACKET_1522BYTE (1 << 17)
#define MAX_RX_PACKET_9700BYTE (5 << 17) #define MAX_RX_PACKET_9700BYTE (5 << 17)
#define MAX_RX_PACKET_MASK (7 << 17)
#define DISABLE_AUTO_NEG_SPEED_GMII (1 << 13) #define DISABLE_AUTO_NEG_SPEED_GMII (1 << 13)
#define DO_NOT_FORCE_LINK_FAIL (1 << 10) #define DO_NOT_FORCE_LINK_FAIL (1 << 10)
#define SERIAL_PORT_CONTROL_RESERVED (1 << 9) #define SERIAL_PORT_CONTROL_RESERVED (1 << 9)
@ -228,6 +235,8 @@ struct tx_desc {
#define GEN_IP_V4_CHECKSUM 0x00040000 #define GEN_IP_V4_CHECKSUM 0x00040000
#define GEN_TCP_UDP_CHECKSUM 0x00020000 #define GEN_TCP_UDP_CHECKSUM 0x00020000
#define UDP_FRAME 0x00010000 #define UDP_FRAME 0x00010000
#define MAC_HDR_EXTRA_4_BYTES 0x00008000
#define MAC_HDR_EXTRA_8_BYTES 0x00000200
#define TX_IHL_SHIFT 11 #define TX_IHL_SHIFT 11
@ -404,6 +413,17 @@ static void rxq_disable(struct rx_queue *rxq)
udelay(10); udelay(10);
} }
static void txq_reset_hw_ptr(struct tx_queue *txq)
{
struct mv643xx_eth_private *mp = txq_to_mp(txq);
int off = TXQ_CURRENT_DESC_PTR(mp->port_num, txq->index);
u32 addr;
addr = (u32)txq->tx_desc_dma;
addr += txq->tx_curr_desc * sizeof(struct tx_desc);
wrl(mp, off, addr);
}
static void txq_enable(struct tx_queue *txq) static void txq_enable(struct tx_queue *txq)
{ {
struct mv643xx_eth_private *mp = txq_to_mp(txq); struct mv643xx_eth_private *mp = txq_to_mp(txq);
@ -614,6 +634,12 @@ static int mv643xx_eth_poll(struct napi_struct *napi, int budget)
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++)
if (mp->txq_mask & (1 << i)) if (mp->txq_mask & (1 << i))
txq_reclaim(mp->txq + i, 0); txq_reclaim(mp->txq + i, 0);
if (netif_carrier_ok(mp->dev)) {
spin_lock(&mp->lock);
__txq_maybe_wake(mp->txq + mp->txq_primary);
spin_unlock(&mp->lock);
}
} }
#endif #endif
@ -706,6 +732,7 @@ static inline __be16 sum16_as_be(__sum16 sum)
static void txq_submit_skb(struct tx_queue *txq, struct sk_buff *skb) static void txq_submit_skb(struct tx_queue *txq, struct sk_buff *skb)
{ {
struct mv643xx_eth_private *mp = txq_to_mp(txq);
int nr_frags = skb_shinfo(skb)->nr_frags; int nr_frags = skb_shinfo(skb)->nr_frags;
int tx_index; int tx_index;
struct tx_desc *desc; struct tx_desc *desc;
@ -732,12 +759,36 @@ static void txq_submit_skb(struct tx_queue *txq, struct sk_buff *skb)
desc->buf_ptr = dma_map_single(NULL, skb->data, length, DMA_TO_DEVICE); desc->buf_ptr = dma_map_single(NULL, skb->data, length, DMA_TO_DEVICE);
if (skb->ip_summed == CHECKSUM_PARTIAL) { if (skb->ip_summed == CHECKSUM_PARTIAL) {
BUG_ON(skb->protocol != htons(ETH_P_IP)); int mac_hdr_len;
BUG_ON(skb->protocol != htons(ETH_P_IP) &&
skb->protocol != htons(ETH_P_8021Q));
cmd_sts |= GEN_TCP_UDP_CHECKSUM | cmd_sts |= GEN_TCP_UDP_CHECKSUM |
GEN_IP_V4_CHECKSUM | GEN_IP_V4_CHECKSUM |
ip_hdr(skb)->ihl << TX_IHL_SHIFT; ip_hdr(skb)->ihl << TX_IHL_SHIFT;
mac_hdr_len = (void *)ip_hdr(skb) - (void *)skb->data;
switch (mac_hdr_len - ETH_HLEN) {
case 0:
break;
case 4:
cmd_sts |= MAC_HDR_EXTRA_4_BYTES;
break;
case 8:
cmd_sts |= MAC_HDR_EXTRA_8_BYTES;
break;
case 12:
cmd_sts |= MAC_HDR_EXTRA_4_BYTES;
cmd_sts |= MAC_HDR_EXTRA_8_BYTES;
break;
default:
if (net_ratelimit())
dev_printk(KERN_ERR, &txq_to_mp(txq)->dev->dev,
"mac header length is %d?!\n", mac_hdr_len);
break;
}
switch (ip_hdr(skb)->protocol) { switch (ip_hdr(skb)->protocol) {
case IPPROTO_UDP: case IPPROTO_UDP:
cmd_sts |= UDP_FRAME; cmd_sts |= UDP_FRAME;
@ -759,6 +810,10 @@ static void txq_submit_skb(struct tx_queue *txq, struct sk_buff *skb)
wmb(); wmb();
desc->cmd_sts = cmd_sts; desc->cmd_sts = cmd_sts;
/* clear TX_END interrupt status */
wrl(mp, INT_CAUSE(mp->port_num), ~(INT_TX_END_0 << txq->index));
rdl(mp, INT_CAUSE(mp->port_num));
/* ensure all descriptors are written before poking hardware */ /* ensure all descriptors are written before poking hardware */
wmb(); wmb();
txq_enable(txq); txq_enable(txq);
@ -1112,10 +1167,28 @@ static int mv643xx_eth_get_settings(struct net_device *dev, struct ethtool_cmd *
static int mv643xx_eth_get_settings_phyless(struct net_device *dev, struct ethtool_cmd *cmd) static int mv643xx_eth_get_settings_phyless(struct net_device *dev, struct ethtool_cmd *cmd)
{ {
struct mv643xx_eth_private *mp = netdev_priv(dev);
u32 port_status;
port_status = rdl(mp, PORT_STATUS(mp->port_num));
cmd->supported = SUPPORTED_MII; cmd->supported = SUPPORTED_MII;
cmd->advertising = ADVERTISED_MII; cmd->advertising = ADVERTISED_MII;
cmd->speed = SPEED_1000; switch (port_status & PORT_SPEED_MASK) {
cmd->duplex = DUPLEX_FULL; case PORT_SPEED_10:
cmd->speed = SPEED_10;
break;
case PORT_SPEED_100:
cmd->speed = SPEED_100;
break;
case PORT_SPEED_1000:
cmd->speed = SPEED_1000;
break;
default:
cmd->speed = -1;
break;
}
cmd->duplex = (port_status & FULL_DUPLEX) ? DUPLEX_FULL : DUPLEX_HALF;
cmd->port = PORT_MII; cmd->port = PORT_MII;
cmd->phy_address = 0; cmd->phy_address = 0;
cmd->transceiver = XCVR_INTERNAL; cmd->transceiver = XCVR_INTERNAL;
@ -1539,8 +1612,11 @@ static int txq_init(struct mv643xx_eth_private *mp, int index)
tx_desc = (struct tx_desc *)txq->tx_desc_area; tx_desc = (struct tx_desc *)txq->tx_desc_area;
for (i = 0; i < txq->tx_ring_size; i++) { for (i = 0; i < txq->tx_ring_size; i++) {
struct tx_desc *txd = tx_desc + i;
int nexti = (i + 1) % txq->tx_ring_size; int nexti = (i + 1) % txq->tx_ring_size;
tx_desc[i].next_desc_ptr = txq->tx_desc_dma +
txd->cmd_sts = 0;
txd->next_desc_ptr = txq->tx_desc_dma +
nexti * sizeof(struct tx_desc); nexti * sizeof(struct tx_desc);
} }
@ -1577,8 +1653,11 @@ static void txq_reclaim(struct tx_queue *txq, int force)
desc = &txq->tx_desc_area[tx_index]; desc = &txq->tx_desc_area[tx_index];
cmd_sts = desc->cmd_sts; cmd_sts = desc->cmd_sts;
if (!force && (cmd_sts & BUFFER_OWNED_BY_DMA)) if (cmd_sts & BUFFER_OWNED_BY_DMA) {
break; if (!force)
break;
desc->cmd_sts = cmd_sts & ~BUFFER_OWNED_BY_DMA;
}
txq->tx_used_desc = (tx_index + 1) % txq->tx_ring_size; txq->tx_used_desc = (tx_index + 1) % txq->tx_ring_size;
txq->tx_desc_count--; txq->tx_desc_count--;
@ -1632,49 +1711,61 @@ static void txq_deinit(struct tx_queue *txq)
/* netdev ops and related ***************************************************/ /* netdev ops and related ***************************************************/
static void update_pscr(struct mv643xx_eth_private *mp, int speed, int duplex) static void handle_link_event(struct mv643xx_eth_private *mp)
{ {
u32 pscr_o; struct net_device *dev = mp->dev;
u32 pscr_n; u32 port_status;
int speed;
int duplex;
int fc;
pscr_o = rdl(mp, PORT_SERIAL_CONTROL(mp->port_num)); port_status = rdl(mp, PORT_STATUS(mp->port_num));
if (!(port_status & LINK_UP)) {
/* clear speed, duplex and rx buffer size fields */ if (netif_carrier_ok(dev)) {
pscr_n = pscr_o & ~(SET_MII_SPEED_TO_100 |
SET_GMII_SPEED_TO_1000 |
SET_FULL_DUPLEX_MODE |
MAX_RX_PACKET_MASK);
if (speed == SPEED_1000) {
pscr_n |= SET_GMII_SPEED_TO_1000 | MAX_RX_PACKET_9700BYTE;
} else {
if (speed == SPEED_100)
pscr_n |= SET_MII_SPEED_TO_100;
pscr_n |= MAX_RX_PACKET_1522BYTE;
}
if (duplex == DUPLEX_FULL)
pscr_n |= SET_FULL_DUPLEX_MODE;
if (pscr_n != pscr_o) {
if ((pscr_o & SERIAL_PORT_ENABLE) == 0)
wrl(mp, PORT_SERIAL_CONTROL(mp->port_num), pscr_n);
else {
int i; int i;
for (i = 0; i < 8; i++) printk(KERN_INFO "%s: link down\n", dev->name);
if (mp->txq_mask & (1 << i))
txq_disable(mp->txq + i);
pscr_o &= ~SERIAL_PORT_ENABLE; netif_carrier_off(dev);
wrl(mp, PORT_SERIAL_CONTROL(mp->port_num), pscr_o); netif_stop_queue(dev);
wrl(mp, PORT_SERIAL_CONTROL(mp->port_num), pscr_n);
wrl(mp, PORT_SERIAL_CONTROL(mp->port_num), pscr_n);
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++) {
if (mp->txq_mask & (1 << i)) struct tx_queue *txq = mp->txq + i;
txq_enable(mp->txq + i);
if (mp->txq_mask & (1 << i)) {
txq_reclaim(txq, 1);
txq_reset_hw_ptr(txq);
}
}
} }
return;
}
switch (port_status & PORT_SPEED_MASK) {
case PORT_SPEED_10:
speed = 10;
break;
case PORT_SPEED_100:
speed = 100;
break;
case PORT_SPEED_1000:
speed = 1000;
break;
default:
speed = -1;
break;
}
duplex = (port_status & FULL_DUPLEX) ? 1 : 0;
fc = (port_status & FLOW_CONTROL_ENABLED) ? 1 : 0;
printk(KERN_INFO "%s: link up, %d Mb/s, %s duplex, "
"flow control %sabled\n", dev->name,
speed, duplex ? "full" : "half",
fc ? "en" : "dis");
if (!netif_carrier_ok(dev)) {
netif_carrier_on(dev);
netif_wake_queue(dev);
} }
} }
@ -1684,7 +1775,6 @@ static irqreturn_t mv643xx_eth_irq(int irq, void *dev_id)
struct mv643xx_eth_private *mp = netdev_priv(dev); struct mv643xx_eth_private *mp = netdev_priv(dev);
u32 int_cause; u32 int_cause;
u32 int_cause_ext; u32 int_cause_ext;
u32 txq_active;
int_cause = rdl(mp, INT_CAUSE(mp->port_num)) & int_cause = rdl(mp, INT_CAUSE(mp->port_num)) &
(INT_TX_END | INT_RX | INT_EXT); (INT_TX_END | INT_RX | INT_EXT);
@ -1698,30 +1788,8 @@ static irqreturn_t mv643xx_eth_irq(int irq, void *dev_id)
wrl(mp, INT_CAUSE_EXT(mp->port_num), ~int_cause_ext); wrl(mp, INT_CAUSE_EXT(mp->port_num), ~int_cause_ext);
} }
if (int_cause_ext & (INT_EXT_PHY | INT_EXT_LINK)) { if (int_cause_ext & (INT_EXT_PHY | INT_EXT_LINK))
if (mp->phy_addr == -1 || mii_link_ok(&mp->mii)) { handle_link_event(mp);
int i;
if (mp->phy_addr != -1) {
struct ethtool_cmd cmd;
mii_ethtool_gset(&mp->mii, &cmd);
update_pscr(mp, cmd.speed, cmd.duplex);
}
for (i = 0; i < 8; i++)
if (mp->txq_mask & (1 << i))
txq_enable(mp->txq + i);
if (!netif_carrier_ok(dev)) {
netif_carrier_on(dev);
__txq_maybe_wake(mp->txq + mp->txq_primary);
}
} else if (netif_carrier_ok(dev)) {
netif_stop_queue(dev);
netif_carrier_off(dev);
}
}
/* /*
* RxBuffer or RxError set for any of the 8 queues? * RxBuffer or RxError set for any of the 8 queues?
@ -1743,8 +1811,6 @@ static irqreturn_t mv643xx_eth_irq(int irq, void *dev_id)
} }
#endif #endif
txq_active = rdl(mp, TXQ_COMMAND(mp->port_num));
/* /*
* TxBuffer or TxError set for any of the 8 queues? * TxBuffer or TxError set for any of the 8 queues?
*/ */
@ -1754,6 +1820,16 @@ static irqreturn_t mv643xx_eth_irq(int irq, void *dev_id)
for (i = 0; i < 8; i++) for (i = 0; i < 8; i++)
if (mp->txq_mask & (1 << i)) if (mp->txq_mask & (1 << i))
txq_reclaim(mp->txq + i, 0); txq_reclaim(mp->txq + i, 0);
/*
* Enough space again in the primary TX queue for a
* full packet?
*/
if (netif_carrier_ok(dev)) {
spin_lock(&mp->lock);
__txq_maybe_wake(mp->txq + mp->txq_primary);
spin_unlock(&mp->lock);
}
} }
/* /*
@ -1763,19 +1839,25 @@ static irqreturn_t mv643xx_eth_irq(int irq, void *dev_id)
int i; int i;
wrl(mp, INT_CAUSE(mp->port_num), ~(int_cause & INT_TX_END)); wrl(mp, INT_CAUSE(mp->port_num), ~(int_cause & INT_TX_END));
spin_lock(&mp->lock);
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
struct tx_queue *txq = mp->txq + i; struct tx_queue *txq = mp->txq + i;
if (txq->tx_desc_count && !((txq_active >> i) & 1)) u32 hw_desc_ptr;
u32 expected_ptr;
if ((int_cause & (INT_TX_END_0 << i)) == 0)
continue;
hw_desc_ptr =
rdl(mp, TXQ_CURRENT_DESC_PTR(mp->port_num, i));
expected_ptr = (u32)txq->tx_desc_dma +
txq->tx_curr_desc * sizeof(struct tx_desc);
if (hw_desc_ptr != expected_ptr)
txq_enable(txq); txq_enable(txq);
} }
} spin_unlock(&mp->lock);
/*
* Enough space again in the primary TX queue for a full packet?
*/
if (int_cause_ext & INT_EXT_TX) {
struct tx_queue *txq = mp->txq + mp->txq_primary;
__txq_maybe_wake(txq);
} }
return IRQ_HANDLED; return IRQ_HANDLED;
@ -1785,14 +1867,14 @@ static void phy_reset(struct mv643xx_eth_private *mp)
{ {
unsigned int data; unsigned int data;
smi_reg_read(mp, mp->phy_addr, 0, &data); smi_reg_read(mp, mp->phy_addr, MII_BMCR, &data);
data |= 0x8000; data |= BMCR_RESET;
smi_reg_write(mp, mp->phy_addr, 0, data); smi_reg_write(mp, mp->phy_addr, MII_BMCR, data);
do { do {
udelay(1); udelay(1);
smi_reg_read(mp, mp->phy_addr, 0, &data); smi_reg_read(mp, mp->phy_addr, MII_BMCR, &data);
} while (data & 0x8000); } while (data & BMCR_RESET);
} }
static void port_start(struct mv643xx_eth_private *mp) static void port_start(struct mv643xx_eth_private *mp)
@ -1800,23 +1882,6 @@ static void port_start(struct mv643xx_eth_private *mp)
u32 pscr; u32 pscr;
int i; int i;
/*
* Configure basic link parameters.
*/
pscr = rdl(mp, PORT_SERIAL_CONTROL(mp->port_num));
pscr &= ~(SERIAL_PORT_ENABLE | FORCE_LINK_PASS);
wrl(mp, PORT_SERIAL_CONTROL(mp->port_num), pscr);
pscr |= DISABLE_AUTO_NEG_FOR_FLOW_CTRL |
DISABLE_AUTO_NEG_SPEED_GMII |
DISABLE_AUTO_NEG_FOR_DUPLEX |
DO_NOT_FORCE_LINK_FAIL |
SERIAL_PORT_CONTROL_RESERVED;
wrl(mp, PORT_SERIAL_CONTROL(mp->port_num), pscr);
pscr |= SERIAL_PORT_ENABLE;
wrl(mp, PORT_SERIAL_CONTROL(mp->port_num), pscr);
wrl(mp, SDMA_CONFIG(mp->port_num), PORT_SDMA_CONFIG_DEFAULT_VALUE);
/* /*
* Perform PHY reset, if there is a PHY. * Perform PHY reset, if there is a PHY.
*/ */
@ -1828,22 +1893,32 @@ static void port_start(struct mv643xx_eth_private *mp)
mv643xx_eth_set_settings(mp->dev, &cmd); mv643xx_eth_set_settings(mp->dev, &cmd);
} }
/*
* Configure basic link parameters.
*/
pscr = rdl(mp, PORT_SERIAL_CONTROL(mp->port_num));
pscr |= SERIAL_PORT_ENABLE;
wrl(mp, PORT_SERIAL_CONTROL(mp->port_num), pscr);
pscr |= DO_NOT_FORCE_LINK_FAIL;
if (mp->phy_addr == -1)
pscr |= FORCE_LINK_PASS;
wrl(mp, PORT_SERIAL_CONTROL(mp->port_num), pscr);
wrl(mp, SDMA_CONFIG(mp->port_num), PORT_SDMA_CONFIG_DEFAULT_VALUE);
/* /*
* Configure TX path and queues. * Configure TX path and queues.
*/ */
tx_set_rate(mp, 1000000000, 16777216); tx_set_rate(mp, 1000000000, 16777216);
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
struct tx_queue *txq = mp->txq + i; struct tx_queue *txq = mp->txq + i;
int off = TXQ_CURRENT_DESC_PTR(mp->port_num, i);
u32 addr;
if ((mp->txq_mask & (1 << i)) == 0) if ((mp->txq_mask & (1 << i)) == 0)
continue; continue;
addr = (u32)txq->tx_desc_dma; txq_reset_hw_ptr(txq);
addr += txq->tx_curr_desc * sizeof(struct tx_desc);
wrl(mp, off, addr);
txq_set_rate(txq, 1000000000, 16777216); txq_set_rate(txq, 1000000000, 16777216);
txq_set_fixed_prio_mode(txq); txq_set_fixed_prio_mode(txq);
} }
@ -1965,6 +2040,9 @@ static int mv643xx_eth_open(struct net_device *dev)
napi_enable(&mp->napi); napi_enable(&mp->napi);
#endif #endif
netif_carrier_off(dev);
netif_stop_queue(dev);
port_start(mp); port_start(mp);
set_rx_coal(mp, 0); set_rx_coal(mp, 0);
@ -1999,8 +2077,14 @@ static void port_reset(struct mv643xx_eth_private *mp)
if (mp->txq_mask & (1 << i)) if (mp->txq_mask & (1 << i))
txq_disable(mp->txq + i); txq_disable(mp->txq + i);
} }
while (!(rdl(mp, PORT_STATUS(mp->port_num)) & TX_FIFO_EMPTY))
while (1) {
u32 ps = rdl(mp, PORT_STATUS(mp->port_num));
if ((ps & (TX_IN_PROGRESS | TX_FIFO_EMPTY)) == TX_FIFO_EMPTY)
break;
udelay(10); udelay(10);
}
/* Reset the Enable bit in the Configuration Register */ /* Reset the Enable bit in the Configuration Register */
data = rdl(mp, PORT_SERIAL_CONTROL(mp->port_num)); data = rdl(mp, PORT_SERIAL_CONTROL(mp->port_num));
@ -2202,7 +2286,8 @@ static int mv643xx_eth_shared_probe(struct platform_device *pdev)
int ret; int ret;
if (!mv643xx_eth_version_printed++) if (!mv643xx_eth_version_printed++)
printk(KERN_NOTICE "MV-643xx 10/100/1000 Ethernet Driver\n"); printk(KERN_NOTICE "MV-643xx 10/100/1000 ethernet "
"driver version %s\n", mv643xx_eth_driver_version);
ret = -EINVAL; ret = -EINVAL;
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@ -2338,14 +2423,14 @@ static int phy_detect(struct mv643xx_eth_private *mp)
unsigned int data; unsigned int data;
unsigned int data2; unsigned int data2;
smi_reg_read(mp, mp->phy_addr, 0, &data); smi_reg_read(mp, mp->phy_addr, MII_BMCR, &data);
smi_reg_write(mp, mp->phy_addr, 0, data ^ 0x1000); smi_reg_write(mp, mp->phy_addr, MII_BMCR, data ^ BMCR_ANENABLE);
smi_reg_read(mp, mp->phy_addr, 0, &data2); smi_reg_read(mp, mp->phy_addr, MII_BMCR, &data2);
if (((data ^ data2) & 0x1000) == 0) if (((data ^ data2) & BMCR_ANENABLE) == 0)
return -ENODEV; return -ENODEV;
smi_reg_write(mp, mp->phy_addr, 0, data); smi_reg_write(mp, mp->phy_addr, MII_BMCR, data);
return 0; return 0;
} }
@ -2393,12 +2478,39 @@ static int phy_init(struct mv643xx_eth_private *mp,
cmd.duplex = pd->duplex; cmd.duplex = pd->duplex;
} }
update_pscr(mp, cmd.speed, cmd.duplex);
mv643xx_eth_set_settings(mp->dev, &cmd); mv643xx_eth_set_settings(mp->dev, &cmd);
return 0; return 0;
} }
static void init_pscr(struct mv643xx_eth_private *mp, int speed, int duplex)
{
u32 pscr;
pscr = rdl(mp, PORT_SERIAL_CONTROL(mp->port_num));
if (pscr & SERIAL_PORT_ENABLE) {
pscr &= ~SERIAL_PORT_ENABLE;
wrl(mp, PORT_SERIAL_CONTROL(mp->port_num), pscr);
}
pscr = MAX_RX_PACKET_9700BYTE | SERIAL_PORT_CONTROL_RESERVED;
if (mp->phy_addr == -1) {
pscr |= DISABLE_AUTO_NEG_SPEED_GMII;
if (speed == SPEED_1000)
pscr |= SET_GMII_SPEED_TO_1000;
else if (speed == SPEED_100)
pscr |= SET_MII_SPEED_TO_100;
pscr |= DISABLE_AUTO_NEG_FOR_FLOW_CTRL;
pscr |= DISABLE_AUTO_NEG_FOR_DUPLEX;
if (duplex == DUPLEX_FULL)
pscr |= SET_FULL_DUPLEX_MODE;
}
wrl(mp, PORT_SERIAL_CONTROL(mp->port_num), pscr);
}
static int mv643xx_eth_probe(struct platform_device *pdev) static int mv643xx_eth_probe(struct platform_device *pdev)
{ {
struct mv643xx_eth_platform_data *pd; struct mv643xx_eth_platform_data *pd;
@ -2452,6 +2564,7 @@ static int mv643xx_eth_probe(struct platform_device *pdev)
} else { } else {
SET_ETHTOOL_OPS(dev, &mv643xx_eth_ethtool_ops_phyless); SET_ETHTOOL_OPS(dev, &mv643xx_eth_ethtool_ops_phyless);
} }
init_pscr(mp, pd->speed, pd->duplex);
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
@ -2478,6 +2591,7 @@ static int mv643xx_eth_probe(struct platform_device *pdev)
* have to map the buffers to ISA memory which is only 16 MB * have to map the buffers to ISA memory which is only 16 MB
*/ */
dev->features = NETIF_F_SG | NETIF_F_IP_CSUM; dev->features = NETIF_F_SG | NETIF_F_IP_CSUM;
dev->vlan_features = NETIF_F_SG | NETIF_F_IP_CSUM;
#endif #endif
SET_NETDEV_DEV(dev, &pdev->dev); SET_NETDEV_DEV(dev, &pdev->dev);

View file

@ -536,7 +536,7 @@ static int __init ne_probe1(struct net_device *dev, unsigned long ioaddr)
#ifdef CONFIG_NET_POLL_CONTROLLER #ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = eip_poll; dev->poll_controller = eip_poll;
#endif #endif
NS8390_init(dev, 0); NS8390p_init(dev, 0);
ret = register_netdev(dev); ret = register_netdev(dev);
if (ret) if (ret)
@ -794,7 +794,7 @@ retry:
if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */ if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */
printk(KERN_WARNING "%s: timeout waiting for Tx RDC.\n", dev->name); printk(KERN_WARNING "%s: timeout waiting for Tx RDC.\n", dev->name);
ne_reset_8390(dev); ne_reset_8390(dev);
NS8390_init(dev,1); NS8390p_init(dev, 1);
break; break;
} }
@ -855,7 +855,7 @@ static int ne_drv_resume(struct platform_device *pdev)
if (netif_running(dev)) { if (netif_running(dev)) {
ne_reset_8390(dev); ne_reset_8390(dev);
NS8390_init(dev, 1); NS8390p_init(dev, 1);
netif_device_attach(dev); netif_device_attach(dev);
} }
return 0; return 0;

View file

@ -3143,7 +3143,7 @@ static void tx_intr_handler(struct fifo_info *fifo_data)
pkt_cnt++; pkt_cnt++;
/* Updating the statistics block */ /* Updating the statistics block */
nic->stats.tx_bytes += skb->len; nic->dev->stats.tx_bytes += skb->len;
nic->mac_control.stats_info->sw_stat.mem_freed += skb->truesize; nic->mac_control.stats_info->sw_stat.mem_freed += skb->truesize;
dev_kfree_skb_irq(skb); dev_kfree_skb_irq(skb);
@ -4896,25 +4896,42 @@ static struct net_device_stats *s2io_get_stats(struct net_device *dev)
/* Configure Stats for immediate updt */ /* Configure Stats for immediate updt */
s2io_updt_stats(sp); s2io_updt_stats(sp);
/* Using sp->stats as a staging area, because reset (due to mtu
change, for example) will clear some hardware counters */
dev->stats.tx_packets +=
le32_to_cpu(mac_control->stats_info->tmac_frms) -
sp->stats.tx_packets;
sp->stats.tx_packets = sp->stats.tx_packets =
le32_to_cpu(mac_control->stats_info->tmac_frms); le32_to_cpu(mac_control->stats_info->tmac_frms);
dev->stats.tx_errors +=
le32_to_cpu(mac_control->stats_info->tmac_any_err_frms) -
sp->stats.tx_errors;
sp->stats.tx_errors = sp->stats.tx_errors =
le32_to_cpu(mac_control->stats_info->tmac_any_err_frms); le32_to_cpu(mac_control->stats_info->tmac_any_err_frms);
dev->stats.rx_errors +=
le64_to_cpu(mac_control->stats_info->rmac_drop_frms) -
sp->stats.rx_errors;
sp->stats.rx_errors = sp->stats.rx_errors =
le64_to_cpu(mac_control->stats_info->rmac_drop_frms); le64_to_cpu(mac_control->stats_info->rmac_drop_frms);
dev->stats.multicast =
le32_to_cpu(mac_control->stats_info->rmac_vld_mcst_frms) -
sp->stats.multicast;
sp->stats.multicast = sp->stats.multicast =
le32_to_cpu(mac_control->stats_info->rmac_vld_mcst_frms); le32_to_cpu(mac_control->stats_info->rmac_vld_mcst_frms);
dev->stats.rx_length_errors =
le64_to_cpu(mac_control->stats_info->rmac_long_frms) -
sp->stats.rx_length_errors;
sp->stats.rx_length_errors = sp->stats.rx_length_errors =
le64_to_cpu(mac_control->stats_info->rmac_long_frms); le64_to_cpu(mac_control->stats_info->rmac_long_frms);
/* collect per-ring rx_packets and rx_bytes */ /* collect per-ring rx_packets and rx_bytes */
sp->stats.rx_packets = sp->stats.rx_bytes = 0; dev->stats.rx_packets = dev->stats.rx_bytes = 0;
for (i = 0; i < config->rx_ring_num; i++) { for (i = 0; i < config->rx_ring_num; i++) {
sp->stats.rx_packets += mac_control->rings[i].rx_packets; dev->stats.rx_packets += mac_control->rings[i].rx_packets;
sp->stats.rx_bytes += mac_control->rings[i].rx_bytes; dev->stats.rx_bytes += mac_control->rings[i].rx_bytes;
} }
return (&sp->stats); return (&dev->stats);
} }
/** /**
@ -7419,7 +7436,7 @@ static int rx_osm_handler(struct ring_info *ring_data, struct RxD_t * rxdp)
if (err_mask != 0x5) { if (err_mask != 0x5) {
DBG_PRINT(ERR_DBG, "%s: Rx error Value: 0x%x\n", DBG_PRINT(ERR_DBG, "%s: Rx error Value: 0x%x\n",
dev->name, err_mask); dev->name, err_mask);
sp->stats.rx_crc_errors++; dev->stats.rx_crc_errors++;
sp->mac_control.stats_info->sw_stat.mem_freed sp->mac_control.stats_info->sw_stat.mem_freed
+= skb->truesize; += skb->truesize;
dev_kfree_skb(skb); dev_kfree_skb(skb);

View file

@ -1,7 +1,7 @@
/* /*
* SuperH Ethernet device driver * SuperH Ethernet device driver
* *
* Copyright (C) 2006,2007 Nobuhiro Iwamatsu * Copyright (C) 2006-2008 Nobuhiro Iwamatsu
* Copyright (C) 2008 Renesas Solutions Corp. * Copyright (C) 2008 Renesas Solutions Corp.
* *
* This program is free software; you can redistribute it and/or modify it * This program is free software; you can redistribute it and/or modify it
@ -143,13 +143,39 @@ static struct mdiobb_ops bb_ops = {
.get_mdio_data = sh_get_mdio, .get_mdio_data = sh_get_mdio,
}; };
/* Chip Reset */
static void sh_eth_reset(struct net_device *ndev) static void sh_eth_reset(struct net_device *ndev)
{ {
u32 ioaddr = ndev->base_addr; u32 ioaddr = ndev->base_addr;
#if defined(CONFIG_CPU_SUBTYPE_SH7763)
int cnt = 100;
ctrl_outl(EDSR_ENALL, ioaddr + EDSR);
ctrl_outl(ctrl_inl(ioaddr + EDMR) | EDMR_SRST, ioaddr + EDMR);
while (cnt > 0) {
if (!(ctrl_inl(ioaddr + EDMR) & 0x3))
break;
mdelay(1);
cnt--;
}
if (cnt < 0)
printk(KERN_ERR "Device reset fail\n");
/* Table Init */
ctrl_outl(0x0, ioaddr + TDLAR);
ctrl_outl(0x0, ioaddr + TDFAR);
ctrl_outl(0x0, ioaddr + TDFXR);
ctrl_outl(0x0, ioaddr + TDFFR);
ctrl_outl(0x0, ioaddr + RDLAR);
ctrl_outl(0x0, ioaddr + RDFAR);
ctrl_outl(0x0, ioaddr + RDFXR);
ctrl_outl(0x0, ioaddr + RDFFR);
#else
ctrl_outl(ctrl_inl(ioaddr + EDMR) | EDMR_SRST, ioaddr + EDMR); ctrl_outl(ctrl_inl(ioaddr + EDMR) | EDMR_SRST, ioaddr + EDMR);
mdelay(3); mdelay(3);
ctrl_outl(ctrl_inl(ioaddr + EDMR) & ~EDMR_SRST, ioaddr + EDMR); ctrl_outl(ctrl_inl(ioaddr + EDMR) & ~EDMR_SRST, ioaddr + EDMR);
#endif
} }
/* free skb and descriptor buffer */ /* free skb and descriptor buffer */
@ -180,6 +206,7 @@ static void sh_eth_ring_free(struct net_device *ndev)
/* format skb and descriptor buffer */ /* format skb and descriptor buffer */
static void sh_eth_ring_format(struct net_device *ndev) static void sh_eth_ring_format(struct net_device *ndev)
{ {
u32 ioaddr = ndev->base_addr, reserve = 0;
struct sh_eth_private *mdp = netdev_priv(ndev); struct sh_eth_private *mdp = netdev_priv(ndev);
int i; int i;
struct sk_buff *skb; struct sk_buff *skb;
@ -201,9 +228,15 @@ static void sh_eth_ring_format(struct net_device *ndev)
mdp->rx_skbuff[i] = skb; mdp->rx_skbuff[i] = skb;
if (skb == NULL) if (skb == NULL)
break; break;
skb->dev = ndev; /* Mark as being used by this device. */ skb->dev = ndev; /* Mark as being used by this device. */
#if defined(CONFIG_CPU_SUBTYPE_SH7763)
reserve = SH7763_SKB_ALIGN
- ((uint32_t)skb->data & (SH7763_SKB_ALIGN-1));
if (reserve)
skb_reserve(skb, reserve);
#else
skb_reserve(skb, RX_OFFSET); skb_reserve(skb, RX_OFFSET);
#endif
/* RX descriptor */ /* RX descriptor */
rxdesc = &mdp->rx_ring[i]; rxdesc = &mdp->rx_ring[i];
rxdesc->addr = (u32)skb->data & ~0x3UL; rxdesc->addr = (u32)skb->data & ~0x3UL;
@ -211,12 +244,25 @@ static void sh_eth_ring_format(struct net_device *ndev)
/* The size of the buffer is 16 byte boundary. */ /* The size of the buffer is 16 byte boundary. */
rxdesc->buffer_length = (mdp->rx_buf_sz + 16) & ~0x0F; rxdesc->buffer_length = (mdp->rx_buf_sz + 16) & ~0x0F;
/* Rx descriptor address set */
if (i == 0) {
ctrl_outl((u32)rxdesc, ioaddr + RDLAR);
#if defined(CONFIG_CPU_SUBTYPE_SH7763)
ctrl_outl((u32)rxdesc, ioaddr + RDFAR);
#endif
}
} }
/* Rx descriptor address set */
#if defined(CONFIG_CPU_SUBTYPE_SH7763)
ctrl_outl((u32)rxdesc, ioaddr + RDFXR);
ctrl_outl(0x1, ioaddr + RDFFR);
#endif
mdp->dirty_rx = (u32) (i - RX_RING_SIZE); mdp->dirty_rx = (u32) (i - RX_RING_SIZE);
/* Mark the last entry as wrapping the ring. */ /* Mark the last entry as wrapping the ring. */
rxdesc->status |= cpu_to_le32(RC_RDEL); rxdesc->status |= cpu_to_le32(RD_RDEL);
memset(mdp->tx_ring, 0, tx_ringsize); memset(mdp->tx_ring, 0, tx_ringsize);
@ -226,8 +272,21 @@ static void sh_eth_ring_format(struct net_device *ndev)
txdesc = &mdp->tx_ring[i]; txdesc = &mdp->tx_ring[i];
txdesc->status = cpu_to_le32(TD_TFP); txdesc->status = cpu_to_le32(TD_TFP);
txdesc->buffer_length = 0; txdesc->buffer_length = 0;
if (i == 0) {
/* Rx descriptor address set */
ctrl_outl((u32)txdesc, ioaddr + TDLAR);
#if defined(CONFIG_CPU_SUBTYPE_SH7763)
ctrl_outl((u32)txdesc, ioaddr + TDFAR);
#endif
}
} }
/* Rx descriptor address set */
#if defined(CONFIG_CPU_SUBTYPE_SH7763)
ctrl_outl((u32)txdesc, ioaddr + TDFXR);
ctrl_outl(0x1, ioaddr + TDFFR);
#endif
txdesc->status |= cpu_to_le32(TD_TDLE); txdesc->status |= cpu_to_le32(TD_TDLE);
} }
@ -311,31 +370,43 @@ static int sh_eth_dev_init(struct net_device *ndev)
/* Soft Reset */ /* Soft Reset */
sh_eth_reset(ndev); sh_eth_reset(ndev);
ctrl_outl(RPADIR_PADS1, ioaddr + RPADIR); /* SH7712-DMA-RX-PAD2 */ /* Descriptor format */
sh_eth_ring_format(ndev);
ctrl_outl(RPADIR_INIT, ioaddr + RPADIR);
/* all sh_eth int mask */ /* all sh_eth int mask */
ctrl_outl(0, ioaddr + EESIPR); ctrl_outl(0, ioaddr + EESIPR);
/* FIFO size set */ #if defined(CONFIG_CPU_SUBTYPE_SH7763)
ctrl_outl(EDMR_EL, ioaddr + EDMR);
#else
ctrl_outl(0, ioaddr + EDMR); /* Endian change */ ctrl_outl(0, ioaddr + EDMR); /* Endian change */
#endif
/* FIFO size set */
ctrl_outl((FIFO_SIZE_T | FIFO_SIZE_R), ioaddr + FDR); ctrl_outl((FIFO_SIZE_T | FIFO_SIZE_R), ioaddr + FDR);
ctrl_outl(0, ioaddr + TFTR); ctrl_outl(0, ioaddr + TFTR);
/* Frame recv control */
ctrl_outl(0, ioaddr + RMCR); ctrl_outl(0, ioaddr + RMCR);
rx_int_var = mdp->rx_int_var = DESC_I_RINT8 | DESC_I_RINT5; rx_int_var = mdp->rx_int_var = DESC_I_RINT8 | DESC_I_RINT5;
tx_int_var = mdp->tx_int_var = DESC_I_TINT2; tx_int_var = mdp->tx_int_var = DESC_I_TINT2;
ctrl_outl(rx_int_var | tx_int_var, ioaddr + TRSCER); ctrl_outl(rx_int_var | tx_int_var, ioaddr + TRSCER);
#if defined(CONFIG_CPU_SUBTYPE_SH7763)
/* Burst sycle set */
ctrl_outl(0x800, ioaddr + BCULR);
#endif
ctrl_outl((FIFO_F_D_RFF | FIFO_F_D_RFD), ioaddr + FCFTR); ctrl_outl((FIFO_F_D_RFF | FIFO_F_D_RFD), ioaddr + FCFTR);
#if !defined(CONFIG_CPU_SUBTYPE_SH7763)
ctrl_outl(0, ioaddr + TRIMD); ctrl_outl(0, ioaddr + TRIMD);
#endif
/* Descriptor format */ /* Recv frame limit set register */
sh_eth_ring_format(ndev); ctrl_outl(RFLR_VALUE, ioaddr + RFLR);
ctrl_outl((u32)mdp->rx_ring, ioaddr + RDLAR);
ctrl_outl((u32)mdp->tx_ring, ioaddr + TDLAR);
ctrl_outl(ctrl_inl(ioaddr + EESR), ioaddr + EESR); ctrl_outl(ctrl_inl(ioaddr + EESR), ioaddr + EESR);
ctrl_outl((DMAC_M_RFRMER | DMAC_M_ECI | 0x003fffff), ioaddr + EESIPR); ctrl_outl((DMAC_M_RFRMER | DMAC_M_ECI | 0x003fffff), ioaddr + EESIPR);
@ -345,21 +416,26 @@ static int sh_eth_dev_init(struct net_device *ndev)
ECMR_ZPF | (mdp->duplex ? ECMR_DM : 0) | ECMR_TE | ECMR_RE; ECMR_ZPF | (mdp->duplex ? ECMR_DM : 0) | ECMR_TE | ECMR_RE;
ctrl_outl(val, ioaddr + ECMR); ctrl_outl(val, ioaddr + ECMR);
ctrl_outl(ECSR_BRCRX | ECSR_PSRTO | ECSR_LCHNG | ECSR_ICD |
ECSIPR_MPDIP, ioaddr + ECSR); /* E-MAC Status Register clear */
ctrl_outl(ECSIPR_BRCRXIP | ECSIPR_PSRTOIP | ECSIPR_LCHNGIP | ctrl_outl(ECSR_INIT, ioaddr + ECSR);
ECSIPR_ICDIP | ECSIPR_MPDIP, ioaddr + ECSIPR);
/* E-MAC Interrupt Enable register */
ctrl_outl(ECSIPR_INIT, ioaddr + ECSIPR);
/* Set MAC address */ /* Set MAC address */
update_mac_address(ndev); update_mac_address(ndev);
/* mask reset */ /* mask reset */
#if defined(CONFIG_CPU_SUBTYPE_SH7710) #if defined(CONFIG_CPU_SUBTYPE_SH7710) || defined(CONFIG_CPU_SUBTYPE_SH7763)
ctrl_outl(APR_AP, ioaddr + APR); ctrl_outl(APR_AP, ioaddr + APR);
ctrl_outl(MPR_MP, ioaddr + MPR); ctrl_outl(MPR_MP, ioaddr + MPR);
ctrl_outl(TPAUSER_UNLIMITED, ioaddr + TPAUSER); ctrl_outl(TPAUSER_UNLIMITED, ioaddr + TPAUSER);
#endif
#if defined(CONFIG_CPU_SUBTYPE_SH7710)
ctrl_outl(BCFR_UNLIMITED, ioaddr + BCFR); ctrl_outl(BCFR_UNLIMITED, ioaddr + BCFR);
#endif #endif
/* Setting the Rx mode will start the Rx process. */ /* Setting the Rx mode will start the Rx process. */
ctrl_outl(EDRRR_R, ioaddr + EDRRR); ctrl_outl(EDRRR_R, ioaddr + EDRRR);
@ -407,7 +483,7 @@ static int sh_eth_rx(struct net_device *ndev)
int boguscnt = (mdp->dirty_rx + RX_RING_SIZE) - mdp->cur_rx; int boguscnt = (mdp->dirty_rx + RX_RING_SIZE) - mdp->cur_rx;
struct sk_buff *skb; struct sk_buff *skb;
u16 pkt_len = 0; u16 pkt_len = 0;
u32 desc_status; u32 desc_status, reserve = 0;
rxdesc = &mdp->rx_ring[entry]; rxdesc = &mdp->rx_ring[entry];
while (!(rxdesc->status & cpu_to_le32(RD_RACT))) { while (!(rxdesc->status & cpu_to_le32(RD_RACT))) {
@ -454,28 +530,38 @@ static int sh_eth_rx(struct net_device *ndev)
for (; mdp->cur_rx - mdp->dirty_rx > 0; mdp->dirty_rx++) { for (; mdp->cur_rx - mdp->dirty_rx > 0; mdp->dirty_rx++) {
entry = mdp->dirty_rx % RX_RING_SIZE; entry = mdp->dirty_rx % RX_RING_SIZE;
rxdesc = &mdp->rx_ring[entry]; rxdesc = &mdp->rx_ring[entry];
/* The size of the buffer is 16 byte boundary. */
rxdesc->buffer_length = (mdp->rx_buf_sz + 16) & ~0x0F;
if (mdp->rx_skbuff[entry] == NULL) { if (mdp->rx_skbuff[entry] == NULL) {
skb = dev_alloc_skb(mdp->rx_buf_sz); skb = dev_alloc_skb(mdp->rx_buf_sz);
mdp->rx_skbuff[entry] = skb; mdp->rx_skbuff[entry] = skb;
if (skb == NULL) if (skb == NULL)
break; /* Better luck next round. */ break; /* Better luck next round. */
skb->dev = ndev; skb->dev = ndev;
#if defined(CONFIG_CPU_SUBTYPE_SH7763)
reserve = SH7763_SKB_ALIGN
- ((uint32_t)skb->data & (SH7763_SKB_ALIGN-1));
if (reserve)
skb_reserve(skb, reserve);
#else
skb_reserve(skb, RX_OFFSET); skb_reserve(skb, RX_OFFSET);
#endif
skb->ip_summed = CHECKSUM_NONE;
rxdesc->addr = (u32)skb->data & ~0x3UL; rxdesc->addr = (u32)skb->data & ~0x3UL;
} }
/* The size of the buffer is 16 byte boundary. */
rxdesc->buffer_length = (mdp->rx_buf_sz + 16) & ~0x0F;
if (entry >= RX_RING_SIZE - 1) if (entry >= RX_RING_SIZE - 1)
rxdesc->status |= rxdesc->status |=
cpu_to_le32(RD_RACT | RD_RFP | RC_RDEL); cpu_to_le32(RD_RACT | RD_RFP | RD_RDEL);
else else
rxdesc->status |= rxdesc->status |=
cpu_to_le32(RD_RACT | RD_RFP); cpu_to_le32(RD_RACT | RD_RFP);
} }
/* Restart Rx engine if stopped. */ /* Restart Rx engine if stopped. */
/* If we don't need to check status, don't. -KDU */ /* If we don't need to check status, don't. -KDU */
ctrl_outl(EDRRR_R, ndev->base_addr + EDRRR); if (!(ctrl_inl(ndev->base_addr + EDRRR) & EDRRR_R))
ctrl_outl(EDRRR_R, ndev->base_addr + EDRRR);
return 0; return 0;
} }
@ -529,13 +615,14 @@ static void sh_eth_error(struct net_device *ndev, int intr_status)
printk(KERN_ERR "Receive Frame Overflow\n"); printk(KERN_ERR "Receive Frame Overflow\n");
} }
} }
#if !defined(CONFIG_CPU_SUBTYPE_SH7763)
if (intr_status & EESR_ADE) { if (intr_status & EESR_ADE) {
if (intr_status & EESR_TDE) { if (intr_status & EESR_TDE) {
if (intr_status & EESR_TFE) if (intr_status & EESR_TFE)
mdp->stats.tx_fifo_errors++; mdp->stats.tx_fifo_errors++;
} }
} }
#endif
if (intr_status & EESR_RDE) { if (intr_status & EESR_RDE) {
/* Receive Descriptor Empty int */ /* Receive Descriptor Empty int */
@ -550,8 +637,11 @@ static void sh_eth_error(struct net_device *ndev, int intr_status)
mdp->stats.rx_fifo_errors++; mdp->stats.rx_fifo_errors++;
printk(KERN_ERR "Receive FIFO Overflow\n"); printk(KERN_ERR "Receive FIFO Overflow\n");
} }
if (intr_status & if (intr_status & (EESR_TWB | EESR_TABT |
(EESR_TWB | EESR_TABT | EESR_ADE | EESR_TDE | EESR_TFE)) { #if !defined(CONFIG_CPU_SUBTYPE_SH7763)
EESR_ADE |
#endif
EESR_TDE | EESR_TFE)) {
/* Tx error */ /* Tx error */
u32 edtrr = ctrl_inl(ndev->base_addr + EDTRR); u32 edtrr = ctrl_inl(ndev->base_addr + EDTRR);
/* dmesg */ /* dmesg */
@ -582,17 +672,23 @@ static irqreturn_t sh_eth_interrupt(int irq, void *netdev)
ioaddr = ndev->base_addr; ioaddr = ndev->base_addr;
spin_lock(&mdp->lock); spin_lock(&mdp->lock);
/* Get interrpt stat */
intr_status = ctrl_inl(ioaddr + EESR); intr_status = ctrl_inl(ioaddr + EESR);
/* Clear interrupt */ /* Clear interrupt */
ctrl_outl(intr_status, ioaddr + EESR); ctrl_outl(intr_status, ioaddr + EESR);
if (intr_status & (EESR_FRC | EESR_RINT8 | if (intr_status & (EESR_FRC | /* Frame recv*/
EESR_RINT5 | EESR_RINT4 | EESR_RINT3 | EESR_RINT2 | EESR_RMAF | /* Multi cast address recv*/
EESR_RINT1)) EESR_RRF | /* Bit frame recv */
EESR_RTLF | /* Long frame recv*/
EESR_RTSF | /* short frame recv */
EESR_PRE | /* PHY-LSI recv error */
EESR_CERF)){ /* recv frame CRC error */
sh_eth_rx(ndev); sh_eth_rx(ndev);
if (intr_status & (EESR_FTC | }
EESR_TINT4 | EESR_TINT3 | EESR_TINT2 | EESR_TINT1)) {
/* Tx Check */
if (intr_status & TX_CHECK) {
sh_eth_txfree(ndev); sh_eth_txfree(ndev);
netif_wake_queue(ndev); netif_wake_queue(ndev);
} }
@ -631,11 +727,32 @@ static void sh_eth_adjust_link(struct net_device *ndev)
if (phydev->duplex != mdp->duplex) { if (phydev->duplex != mdp->duplex) {
new_state = 1; new_state = 1;
mdp->duplex = phydev->duplex; mdp->duplex = phydev->duplex;
#if defined(CONFIG_CPU_SUBTYPE_SH7763)
if (mdp->duplex) { /* FULL */
ctrl_outl(ctrl_inl(ioaddr + ECMR) | ECMR_DM,
ioaddr + ECMR);
} else { /* Half */
ctrl_outl(ctrl_inl(ioaddr + ECMR) & ~ECMR_DM,
ioaddr + ECMR);
}
#endif
} }
if (phydev->speed != mdp->speed) { if (phydev->speed != mdp->speed) {
new_state = 1; new_state = 1;
mdp->speed = phydev->speed; mdp->speed = phydev->speed;
#if defined(CONFIG_CPU_SUBTYPE_SH7763)
switch (mdp->speed) {
case 10: /* 10BASE */
ctrl_outl(GECMR_10, ioaddr + GECMR); break;
case 100:/* 100BASE */
ctrl_outl(GECMR_100, ioaddr + GECMR); break;
case 1000: /* 1000BASE */
ctrl_outl(GECMR_1000, ioaddr + GECMR); break;
default:
break;
}
#endif
} }
if (mdp->link == PHY_DOWN) { if (mdp->link == PHY_DOWN) {
ctrl_outl((ctrl_inl(ioaddr + ECMR) & ~ECMR_TXF) ctrl_outl((ctrl_inl(ioaddr + ECMR) & ~ECMR_TXF)
@ -730,7 +847,7 @@ static int sh_eth_open(struct net_device *ndev)
/* Set the timer to check for link beat. */ /* Set the timer to check for link beat. */
init_timer(&mdp->timer); init_timer(&mdp->timer);
mdp->timer.expires = (jiffies + (24 * HZ)) / 10;/* 2.4 sec. */ mdp->timer.expires = (jiffies + (24 * HZ)) / 10;/* 2.4 sec. */
setup_timer(&mdp->timer, sh_eth_timer, ndev); setup_timer(&mdp->timer, sh_eth_timer, (unsigned long)ndev);
return ret; return ret;
@ -820,7 +937,9 @@ static int sh_eth_start_xmit(struct sk_buff *skb, struct net_device *ndev)
mdp->cur_tx++; mdp->cur_tx++;
ctrl_outl(EDTRR_TRNS, ndev->base_addr + EDTRR); if (!(ctrl_inl(ndev->base_addr + EDTRR) & EDTRR_TRNS))
ctrl_outl(EDTRR_TRNS, ndev->base_addr + EDTRR);
ndev->trans_start = jiffies; ndev->trans_start = jiffies;
return 0; return 0;
@ -877,9 +996,15 @@ static struct net_device_stats *sh_eth_get_stats(struct net_device *ndev)
ctrl_outl(0, ioaddr + CDCR); /* (write clear) */ ctrl_outl(0, ioaddr + CDCR); /* (write clear) */
mdp->stats.tx_carrier_errors += ctrl_inl(ioaddr + LCCR); mdp->stats.tx_carrier_errors += ctrl_inl(ioaddr + LCCR);
ctrl_outl(0, ioaddr + LCCR); /* (write clear) */ ctrl_outl(0, ioaddr + LCCR); /* (write clear) */
#if defined(CONFIG_CPU_SUBTYPE_SH7763)
mdp->stats.tx_carrier_errors += ctrl_inl(ioaddr + CERCR);/* CERCR */
ctrl_outl(0, ioaddr + CERCR); /* (write clear) */
mdp->stats.tx_carrier_errors += ctrl_inl(ioaddr + CEECR);/* CEECR */
ctrl_outl(0, ioaddr + CEECR); /* (write clear) */
#else
mdp->stats.tx_carrier_errors += ctrl_inl(ioaddr + CNDCR); mdp->stats.tx_carrier_errors += ctrl_inl(ioaddr + CNDCR);
ctrl_outl(0, ioaddr + CNDCR); /* (write clear) */ ctrl_outl(0, ioaddr + CNDCR); /* (write clear) */
#endif
return &mdp->stats; return &mdp->stats;
} }
@ -929,8 +1054,13 @@ static void sh_eth_tsu_init(u32 ioaddr)
ctrl_outl(0, ioaddr + TSU_FWSL0); ctrl_outl(0, ioaddr + TSU_FWSL0);
ctrl_outl(0, ioaddr + TSU_FWSL1); ctrl_outl(0, ioaddr + TSU_FWSL1);
ctrl_outl(TSU_FWSLC_POSTENU | TSU_FWSLC_POSTENL, ioaddr + TSU_FWSLC); ctrl_outl(TSU_FWSLC_POSTENU | TSU_FWSLC_POSTENL, ioaddr + TSU_FWSLC);
#if defined(CONFIG_CPU_SUBTYPE_SH7763)
ctrl_outl(0, ioaddr + TSU_QTAG0); /* Disable QTAG(0->1) */
ctrl_outl(0, ioaddr + TSU_QTAG1); /* Disable QTAG(1->0) */
#else
ctrl_outl(0, ioaddr + TSU_QTAGM0); /* Disable QTAG(0->1) */ ctrl_outl(0, ioaddr + TSU_QTAGM0); /* Disable QTAG(0->1) */
ctrl_outl(0, ioaddr + TSU_QTAGM1); /* Disable QTAG(1->0) */ ctrl_outl(0, ioaddr + TSU_QTAGM1); /* Disable QTAG(1->0) */
#endif
ctrl_outl(0, ioaddr + TSU_FWSR); /* all interrupt status clear */ ctrl_outl(0, ioaddr + TSU_FWSR); /* all interrupt status clear */
ctrl_outl(0, ioaddr + TSU_FWINMK); /* Disable all interrupt */ ctrl_outl(0, ioaddr + TSU_FWINMK); /* Disable all interrupt */
ctrl_outl(0, ioaddr + TSU_TEN); /* Disable all CAM entry */ ctrl_outl(0, ioaddr + TSU_TEN); /* Disable all CAM entry */
@ -1088,7 +1218,7 @@ static int sh_eth_drv_probe(struct platform_device *pdev)
/* First device only init */ /* First device only init */
if (!devno) { if (!devno) {
/* reset device */ /* reset device */
ctrl_outl(ARSTR_ARSTR, ndev->base_addr + ARSTR); ctrl_outl(ARSTR_ARSTR, ARSTR);
mdelay(1); mdelay(1);
/* TSU init (Init only)*/ /* TSU init (Init only)*/
@ -1110,8 +1240,8 @@ static int sh_eth_drv_probe(struct platform_device *pdev)
ndev->name, CARDNAME, (u32) ndev->base_addr); ndev->name, CARDNAME, (u32) ndev->base_addr);
for (i = 0; i < 5; i++) for (i = 0; i < 5; i++)
printk(KERN_INFO "%2.2x:", ndev->dev_addr[i]); printk(KERN_INFO "%02X:", ndev->dev_addr[i]);
printk(KERN_INFO "%2.2x, IRQ %d.\n", ndev->dev_addr[i], ndev->irq); printk(KERN_INFO "%02X, IRQ %d.\n", ndev->dev_addr[i], ndev->irq);
platform_set_drvdata(pdev, ndev); platform_set_drvdata(pdev, ndev);

View file

@ -32,118 +32,249 @@
#define CARDNAME "sh-eth" #define CARDNAME "sh-eth"
#define TX_TIMEOUT (5*HZ) #define TX_TIMEOUT (5*HZ)
#define TX_RING_SIZE 64 /* Tx ring size */
#define TX_RING_SIZE 128 /* Tx ring size */ #define RX_RING_SIZE 64 /* Rx ring size */
#define RX_RING_SIZE 128 /* Rx ring size */
#define RX_OFFSET 2 /* skb offset */
#define ETHERSMALL 60 #define ETHERSMALL 60
#define PKT_BUF_SZ 1538 #define PKT_BUF_SZ 1538
#ifdef CONFIG_CPU_SUBTYPE_SH7763
#define SH7763_SKB_ALIGN 32
/* Chip Base Address */ /* Chip Base Address */
#define SH_TSU_ADDR 0xA7000804 # define SH_TSU_ADDR 0xFFE01800
# define ARSTR 0xFFE01800
/* Chip Registers */ /* Chip Registers */
/* E-DMAC */ /* E-DMAC */
#define EDMR 0x0000 # define EDSR 0x000
#define EDTRR 0x0004 # define EDMR 0x400
#define EDRRR 0x0008 # define EDTRR 0x408
#define TDLAR 0x000C # define EDRRR 0x410
#define RDLAR 0x0010 # define EESR 0x428
#define EESR 0x0014 # define EESIPR 0x430
#define EESIPR 0x0018 # define TDLAR 0x010
#define TRSCER 0x001C # define TDFAR 0x014
#define RMFCR 0x0020 # define TDFXR 0x018
#define TFTR 0x0024 # define TDFFR 0x01C
#define FDR 0x0028 # define RDLAR 0x030
#define RMCR 0x002C # define RDFAR 0x034
#define EDOCR 0x0030 # define RDFXR 0x038
#define FCFTR 0x0034 # define RDFFR 0x03C
#define RPADIR 0x0038 # define TRSCER 0x438
#define TRIMD 0x003C # define RMFCR 0x440
#define RBWAR 0x0040 # define TFTR 0x448
#define RDFAR 0x0044 # define FDR 0x450
#define TBRAR 0x004C # define RMCR 0x458
#define TDFAR 0x0050 # define RPADIR 0x460
/* Ether Register */ # define FCFTR 0x468
#define ECMR 0x0160
#define ECSR 0x0164
#define ECSIPR 0x0168
#define PIR 0x016C
#define MAHR 0x0170
#define MALR 0x0174
#define RFLR 0x0178
#define PSR 0x017C
#define TROCR 0x0180
#define CDCR 0x0184
#define LCCR 0x0188
#define CNDCR 0x018C
#define CEFCR 0x0194
#define FRECR 0x0198
#define TSFRCR 0x019C
#define TLFRCR 0x01A0
#define RFCR 0x01A4
#define MAFCR 0x01A8
#define IPGR 0x01B4
#if defined(CONFIG_CPU_SUBTYPE_SH7710)
#define APR 0x01B8
#define MPR 0x01BC
#define TPAUSER 0x1C4
#define BCFR 0x1CC
#endif /* CONFIG_CPU_SH7710 */
#define ARSTR 0x0800 /* Ether Register */
# define ECMR 0x500
# define ECSR 0x510
# define ECSIPR 0x518
# define PIR 0x520
# define PSR 0x528
# define PIPR 0x52C
# define RFLR 0x508
# define APR 0x554
# define MPR 0x558
# define PFTCR 0x55C
# define PFRCR 0x560
# define TPAUSER 0x564
# define GECMR 0x5B0
# define BCULR 0x5B4
# define MAHR 0x5C0
# define MALR 0x5C8
# define TROCR 0x700
# define CDCR 0x708
# define LCCR 0x710
# define CEFCR 0x740
# define FRECR 0x748
# define TSFRCR 0x750
# define TLFRCR 0x758
# define RFCR 0x760
# define CERCR 0x768
# define CEECR 0x770
# define MAFCR 0x778
/* TSU Absolute Address */
# define TSU_CTRST 0x004
# define TSU_FWEN0 0x010
# define TSU_FWEN1 0x014
# define TSU_FCM 0x18
# define TSU_BSYSL0 0x20
# define TSU_BSYSL1 0x24
# define TSU_PRISL0 0x28
# define TSU_PRISL1 0x2C
# define TSU_FWSL0 0x30
# define TSU_FWSL1 0x34
# define TSU_FWSLC 0x38
# define TSU_QTAG0 0x40
# define TSU_QTAG1 0x44
# define TSU_FWSR 0x50
# define TSU_FWINMK 0x54
# define TSU_ADQT0 0x48
# define TSU_ADQT1 0x4C
# define TSU_VTAG0 0x58
# define TSU_VTAG1 0x5C
# define TSU_ADSBSY 0x60
# define TSU_TEN 0x64
# define TSU_POST1 0x70
# define TSU_POST2 0x74
# define TSU_POST3 0x78
# define TSU_POST4 0x7C
# define TSU_ADRH0 0x100
# define TSU_ADRL0 0x104
# define TSU_ADRH31 0x1F8
# define TSU_ADRL31 0x1FC
# define TXNLCR0 0x80
# define TXALCR0 0x84
# define RXNLCR0 0x88
# define RXALCR0 0x8C
# define FWNLCR0 0x90
# define FWALCR0 0x94
# define TXNLCR1 0xA0
# define TXALCR1 0xA4
# define RXNLCR1 0xA8
# define RXALCR1 0xAC
# define FWNLCR1 0xB0
# define FWALCR1 0x40
#else /* CONFIG_CPU_SUBTYPE_SH7763 */
# define RX_OFFSET 2 /* skb offset */
/* Chip base address */
# define SH_TSU_ADDR 0xA7000804
# define ARSTR 0xA7000800
/* Chip Registers */
/* E-DMAC */
# define EDMR 0x0000
# define EDTRR 0x0004
# define EDRRR 0x0008
# define TDLAR 0x000C
# define RDLAR 0x0010
# define EESR 0x0014
# define EESIPR 0x0018
# define TRSCER 0x001C
# define RMFCR 0x0020
# define TFTR 0x0024
# define FDR 0x0028
# define RMCR 0x002C
# define EDOCR 0x0030
# define FCFTR 0x0034
# define RPADIR 0x0038
# define TRIMD 0x003C
# define RBWAR 0x0040
# define RDFAR 0x0044
# define TBRAR 0x004C
# define TDFAR 0x0050
/* Ether Register */
# define ECMR 0x0160
# define ECSR 0x0164
# define ECSIPR 0x0168
# define PIR 0x016C
# define MAHR 0x0170
# define MALR 0x0174
# define RFLR 0x0178
# define PSR 0x017C
# define TROCR 0x0180
# define CDCR 0x0184
# define LCCR 0x0188
# define CNDCR 0x018C
# define CEFCR 0x0194
# define FRECR 0x0198
# define TSFRCR 0x019C
# define TLFRCR 0x01A0
# define RFCR 0x01A4
# define MAFCR 0x01A8
# define IPGR 0x01B4
# if defined(CONFIG_CPU_SUBTYPE_SH7710)
# define APR 0x01B8
# define MPR 0x01BC
# define TPAUSER 0x1C4
# define BCFR 0x1CC
# endif /* CONFIG_CPU_SH7710 */
/* TSU */ /* TSU */
#define TSU_CTRST 0x004 # define TSU_CTRST 0x004
#define TSU_FWEN0 0x010 # define TSU_FWEN0 0x010
#define TSU_FWEN1 0x014 # define TSU_FWEN1 0x014
#define TSU_FCM 0x018 # define TSU_FCM 0x018
#define TSU_BSYSL0 0x020 # define TSU_BSYSL0 0x020
#define TSU_BSYSL1 0x024 # define TSU_BSYSL1 0x024
#define TSU_PRISL0 0x028 # define TSU_PRISL0 0x028
#define TSU_PRISL1 0x02C # define TSU_PRISL1 0x02C
#define TSU_FWSL0 0x030 # define TSU_FWSL0 0x030
#define TSU_FWSL1 0x034 # define TSU_FWSL1 0x034
#define TSU_FWSLC 0x038 # define TSU_FWSLC 0x038
#define TSU_QTAGM0 0x040 # define TSU_QTAGM0 0x040
#define TSU_QTAGM1 0x044 # define TSU_QTAGM1 0x044
#define TSU_ADQT0 0x048 # define TSU_ADQT0 0x048
#define TSU_ADQT1 0x04C # define TSU_ADQT1 0x04C
#define TSU_FWSR 0x050 # define TSU_FWSR 0x050
#define TSU_FWINMK 0x054 # define TSU_FWINMK 0x054
#define TSU_ADSBSY 0x060 # define TSU_ADSBSY 0x060
#define TSU_TEN 0x064 # define TSU_TEN 0x064
#define TSU_POST1 0x070 # define TSU_POST1 0x070
#define TSU_POST2 0x074 # define TSU_POST2 0x074
#define TSU_POST3 0x078 # define TSU_POST3 0x078
#define TSU_POST4 0x07C # define TSU_POST4 0x07C
#define TXNLCR0 0x080 # define TXNLCR0 0x080
#define TXALCR0 0x084 # define TXALCR0 0x084
#define RXNLCR0 0x088 # define RXNLCR0 0x088
#define RXALCR0 0x08C # define RXALCR0 0x08C
#define FWNLCR0 0x090 # define FWNLCR0 0x090
#define FWALCR0 0x094 # define FWALCR0 0x094
#define TXNLCR1 0x0A0 # define TXNLCR1 0x0A0
#define TXALCR1 0x0A4 # define TXALCR1 0x0A4
#define RXNLCR1 0x0A8 # define RXNLCR1 0x0A8
#define RXALCR1 0x0AC # define RXALCR1 0x0AC
#define FWNLCR1 0x0B0 # define FWNLCR1 0x0B0
#define FWALCR1 0x0B4 # define FWALCR1 0x0B4
#define TSU_ADRH0 0x0100 #define TSU_ADRH0 0x0100
#define TSU_ADRL0 0x0104 #define TSU_ADRL0 0x0104
#define TSU_ADRL31 0x01FC #define TSU_ADRL31 0x01FC
/* Register's bits */ #endif /* CONFIG_CPU_SUBTYPE_SH7763 */
/*
* Register's bits
*/
#ifdef CONFIG_CPU_SUBTYPE_SH7763
/* EDSR */
enum EDSR_BIT {
EDSR_ENT = 0x01, EDSR_ENR = 0x02,
};
#define EDSR_ENALL (EDSR_ENT|EDSR_ENR)
/* GECMR */
enum GECMR_BIT {
GECMR_10 = 0x0, GECMR_100 = 0x04, GECMR_1000 = 0x01,
};
#endif
/* EDMR */ /* EDMR */
enum DMAC_M_BIT { enum DMAC_M_BIT {
EDMR_DL1 = 0x20, EDMR_DL0 = 0x10, EDMR_SRST = 0x01, EDMR_DL1 = 0x20, EDMR_DL0 = 0x10,
#ifdef CONFIG_CPU_SUBTYPE_SH7763
EDMR_SRST = 0x03,
EMDR_DESC_R = 0x30, /* Descriptor reserve size */
EDMR_EL = 0x40, /* Litte endian */
#else /* CONFIG_CPU_SUBTYPE_SH7763 */
EDMR_SRST = 0x01,
#endif
}; };
/* EDTRR */ /* EDTRR */
enum DMAC_T_BIT { enum DMAC_T_BIT {
#ifdef CONFIG_CPU_SUBTYPE_SH7763
EDTRR_TRNS = 0x03,
#else
EDTRR_TRNS = 0x01, EDTRR_TRNS = 0x01,
#endif
}; };
/* EDRRR*/ /* EDRRR*/
@ -173,21 +304,47 @@ enum PHY_STATUS_BIT { PHY_ST_LINK = 0x01, };
/* EESR */ /* EESR */
enum EESR_BIT { enum EESR_BIT {
EESR_TWB = 0x40000000, EESR_TABT = 0x04000000, #ifndef CONFIG_CPU_SUBTYPE_SH7763
EESR_TWB = 0x40000000,
#else
EESR_TWB = 0xC0000000,
EESR_TC1 = 0x20000000,
EESR_TUC = 0x10000000,
EESR_ROC = 0x80000000,
#endif
EESR_TABT = 0x04000000,
EESR_RABT = 0x02000000, EESR_RFRMER = 0x01000000, EESR_RABT = 0x02000000, EESR_RFRMER = 0x01000000,
EESR_ADE = 0x00800000, EESR_ECI = 0x00400000, #ifndef CONFIG_CPU_SUBTYPE_SH7763
EESR_FTC = 0x00200000, EESR_TDE = 0x00100000, EESR_ADE = 0x00800000,
EESR_TFE = 0x00080000, EESR_FRC = 0x00040000, #endif
EESR_RDE = 0x00020000, EESR_RFE = 0x00010000, EESR_ECI = 0x00400000,
EESR_TINT4 = 0x00000800, EESR_TINT3 = 0x00000400, EESR_FTC = 0x00200000, EESR_TDE = 0x00100000,
EESR_TINT2 = 0x00000200, EESR_TINT1 = 0x00000100, EESR_TFE = 0x00080000, EESR_FRC = 0x00040000,
EESR_RINT8 = 0x00000080, EESR_RINT5 = 0x00000010, EESR_RDE = 0x00020000, EESR_RFE = 0x00010000,
EESR_RINT4 = 0x00000008, EESR_RINT3 = 0x00000004, #ifndef CONFIG_CPU_SUBTYPE_SH7763
EESR_RINT2 = 0x00000002, EESR_RINT1 = 0x00000001, EESR_CND = 0x00000800,
#endif
EESR_DLC = 0x00000400,
EESR_CD = 0x00000200, EESR_RTO = 0x00000100,
EESR_RMAF = 0x00000080, EESR_CEEF = 0x00000040,
EESR_CELF = 0x00000020, EESR_RRF = 0x00000010,
EESR_RTLF = 0x00000008, EESR_RTSF = 0x00000004,
EESR_PRE = 0x00000002, EESR_CERF = 0x00000001,
}; };
#define EESR_ERR_CHECK (EESR_TWB | EESR_TABT | EESR_RABT | EESR_RDE \
#ifdef CONFIG_CPU_SUBTYPE_SH7763
# define TX_CHECK (EESR_TC1 | EESR_FTC)
# define EESR_ERR_CHECK (EESR_TWB | EESR_TABT | EESR_RABT | EESR_RDE \
| EESR_RFRMER | EESR_TFE | EESR_TDE | EESR_ECI)
# define TX_ERROR_CEHCK (EESR_TWB | EESR_TABT | EESR_TDE | EESR_TFE)
#else
# define TX_CHECK (EESR_FTC | EESR_CND | EESR_DLC | EESR_CD | EESR_RTO)
# define EESR_ERR_CHECK (EESR_TWB | EESR_TABT | EESR_RABT | EESR_RDE \
| EESR_RFRMER | EESR_ADE | EESR_TFE | EESR_TDE | EESR_ECI) | EESR_RFRMER | EESR_ADE | EESR_TFE | EESR_TDE | EESR_ECI)
# define TX_ERROR_CEHCK (EESR_TWB | EESR_TABT | EESR_ADE | EESR_TDE | EESR_TFE)
#endif
/* EESIPR */ /* EESIPR */
enum DMAC_IM_BIT { enum DMAC_IM_BIT {
@ -207,8 +364,8 @@ enum DMAC_IM_BIT {
/* Receive descriptor bit */ /* Receive descriptor bit */
enum RD_STS_BIT { enum RD_STS_BIT {
RD_RACT = 0x80000000, RC_RDEL = 0x40000000, RD_RACT = 0x80000000, RD_RDEL = 0x40000000,
RC_RFP1 = 0x20000000, RC_RFP0 = 0x10000000, RD_RFP1 = 0x20000000, RD_RFP0 = 0x10000000,
RD_RFE = 0x08000000, RD_RFS10 = 0x00000200, RD_RFE = 0x08000000, RD_RFS10 = 0x00000200,
RD_RFS9 = 0x00000100, RD_RFS8 = 0x00000080, RD_RFS9 = 0x00000100, RD_RFS8 = 0x00000080,
RD_RFS7 = 0x00000040, RD_RFS6 = 0x00000020, RD_RFS7 = 0x00000040, RD_RFS6 = 0x00000020,
@ -216,9 +373,9 @@ enum RD_STS_BIT {
RD_RFS3 = 0x00000004, RD_RFS2 = 0x00000002, RD_RFS3 = 0x00000004, RD_RFS2 = 0x00000002,
RD_RFS1 = 0x00000001, RD_RFS1 = 0x00000001,
}; };
#define RDF1ST RC_RFP1 #define RDF1ST RD_RFP1
#define RDFEND RC_RFP0 #define RDFEND RD_RFP0
#define RD_RFP (RC_RFP1|RC_RFP0) #define RD_RFP (RD_RFP1|RD_RFP0)
/* FCFTR */ /* FCFTR */
enum FCFTR_BIT { enum FCFTR_BIT {
@ -231,7 +388,8 @@ enum FCFTR_BIT {
/* Transfer descriptor bit */ /* Transfer descriptor bit */
enum TD_STS_BIT { enum TD_STS_BIT {
TD_TACT = 0x80000000, TD_TDLE = 0x40000000, TD_TFP1 = 0x20000000, TD_TACT = 0x80000000,
TD_TDLE = 0x40000000, TD_TFP1 = 0x20000000,
TD_TFP0 = 0x10000000, TD_TFP0 = 0x10000000,
}; };
#define TDF1ST TD_TFP1 #define TDF1ST TD_TFP1
@ -242,6 +400,10 @@ enum TD_STS_BIT {
enum RECV_RST_BIT { RMCR_RST = 0x01, }; enum RECV_RST_BIT { RMCR_RST = 0x01, };
/* ECMR */ /* ECMR */
enum FELIC_MODE_BIT { enum FELIC_MODE_BIT {
#ifdef CONFIG_CPU_SUBTYPE_SH7763
ECMR_TRCCM = 0x04000000, ECMR_RCSC = 0x00800000,
ECMR_DPAD = 0x00200000, ECMR_RZPF = 0x00100000,
#endif
ECMR_ZPF = 0x00080000, ECMR_PFR = 0x00040000, ECMR_RXF = 0x00020000, ECMR_ZPF = 0x00080000, ECMR_PFR = 0x00040000, ECMR_RXF = 0x00020000,
ECMR_TXF = 0x00010000, ECMR_MCT = 0x00002000, ECMR_PRCEF = 0x00001000, ECMR_TXF = 0x00010000, ECMR_MCT = 0x00002000, ECMR_PRCEF = 0x00001000,
ECMR_PMDE = 0x00000200, ECMR_RE = 0x00000040, ECMR_TE = 0x00000020, ECMR_PMDE = 0x00000200, ECMR_RE = 0x00000040, ECMR_TE = 0x00000020,
@ -249,18 +411,45 @@ enum FELIC_MODE_BIT {
ECMR_PRM = 0x00000001, ECMR_PRM = 0x00000001,
}; };
#ifdef CONFIG_CPU_SUBTYPE_SH7763
#define ECMR_CHG_DM (ECMR_TRCCM | ECMR_RZPF | ECMR_ZPF |\
ECMR_PFR | ECMR_RXF | ECMR_TXF | ECMR_MCT)
#else
#define ECMR_CHG_DM (ECMR_ZPF | ECMR_PFR ECMR_RXF | ECMR_TXF | ECMR_MCT)
#endif
/* ECSR */ /* ECSR */
enum ECSR_STATUS_BIT { enum ECSR_STATUS_BIT {
ECSR_BRCRX = 0x20, ECSR_PSRTO = 0x10, ECSR_LCHNG = 0x04, #ifndef CONFIG_CPU_SUBTYPE_SH7763
ECSR_BRCRX = 0x20, ECSR_PSRTO = 0x10,
#endif
ECSR_LCHNG = 0x04,
ECSR_MPD = 0x02, ECSR_ICD = 0x01, ECSR_MPD = 0x02, ECSR_ICD = 0x01,
}; };
#ifdef CONFIG_CPU_SUBTYPE_SH7763
# define ECSR_INIT (ECSR_ICD | ECSIPR_MPDIP)
#else
# define ECSR_INIT (ECSR_BRCRX | ECSR_PSRTO | \
ECSR_LCHNG | ECSR_ICD | ECSIPR_MPDIP)
#endif
/* ECSIPR */ /* ECSIPR */
enum ECSIPR_STATUS_MASK_BIT { enum ECSIPR_STATUS_MASK_BIT {
ECSIPR_BRCRXIP = 0x20, ECSIPR_PSRTOIP = 0x10, ECSIPR_LCHNGIP = 0x04, #ifndef CONFIG_CPU_SUBTYPE_SH7763
ECSIPR_BRCRXIP = 0x20, ECSIPR_PSRTOIP = 0x10,
#endif
ECSIPR_LCHNGIP = 0x04,
ECSIPR_MPDIP = 0x02, ECSIPR_ICDIP = 0x01, ECSIPR_MPDIP = 0x02, ECSIPR_ICDIP = 0x01,
}; };
#ifdef CONFIG_CPU_SUBTYPE_SH7763
# define ECSIPR_INIT (ECSIPR_LCHNGIP | ECSIPR_ICDIP | ECSIPR_MPDIP)
#else
# define ECSIPR_INIT (ECSIPR_BRCRXIP | ECSIPR_PSRTOIP | ECSIPR_LCHNGIP | \
ECSIPR_ICDIP | ECSIPR_MPDIP)
#endif
/* APR */ /* APR */
enum APR_BIT { enum APR_BIT {
APR_AP = 0x00000001, APR_AP = 0x00000001,
@ -285,6 +474,15 @@ enum RPADIR_BIT {
RPADIR_PADR = 0x0003f, RPADIR_PADR = 0x0003f,
}; };
#if defined(CONFIG_CPU_SUBTYPE_SH7763)
# define RPADIR_INIT (0x00)
#else
# define RPADIR_INIT (RPADIR_PADS1)
#endif
/* RFLR */
#define RFLR_VALUE 0x1000
/* FDR */ /* FDR */
enum FIFO_SIZE_BIT { enum FIFO_SIZE_BIT {
FIFO_SIZE_T = 0x00000700, FIFO_SIZE_R = 0x00000007, FIFO_SIZE_T = 0x00000700, FIFO_SIZE_R = 0x00000007,
@ -316,7 +514,7 @@ enum PHY_ANA_BIT {
PHY_A_NP = 0x8000, PHY_A_ACK = 0x4000, PHY_A_RF = 0x2000, PHY_A_NP = 0x8000, PHY_A_ACK = 0x4000, PHY_A_RF = 0x2000,
PHY_A_FCS = 0x0400, PHY_A_T4 = 0x0200, PHY_A_FDX = 0x0100, PHY_A_FCS = 0x0400, PHY_A_T4 = 0x0200, PHY_A_FDX = 0x0100,
PHY_A_HDX = 0x0080, PHY_A_10FDX = 0x0040, PHY_A_10HDX = 0x0020, PHY_A_HDX = 0x0080, PHY_A_10FDX = 0x0040, PHY_A_10HDX = 0x0020,
PHY_A_SEL = 0x001f, PHY_A_SEL = 0x001e,
}; };
/* PHY_ANL */ /* PHY_ANL */
enum PHY_ANL_BIT { enum PHY_ANL_BIT {
@ -449,6 +647,10 @@ struct sh_eth_private {
struct net_device_stats tsu_stats; /* TSU forward status */ struct net_device_stats tsu_stats; /* TSU forward status */
}; };
#ifdef CONFIG_CPU_SUBTYPE_SH7763
/* SH7763 has endian control register */
#define swaps(x, y)
#else
static void swaps(char *src, int len) static void swaps(char *src, int len)
{ {
#ifdef __LITTLE_ENDIAN__ #ifdef __LITTLE_ENDIAN__
@ -460,5 +662,5 @@ static void swaps(char *src, int len)
*p = swab32(*p); *p = swab32(*p);
#endif #endif
} }
#endif /* CONFIG_CPU_SUBTYPE_SH7763 */
#endif #endif

View file

@ -19,6 +19,7 @@
#include "h/smc.h" #include "h/smc.h"
#include "h/smt_p.h" #include "h/smt_p.h"
#include <linux/bitrev.h> #include <linux/bitrev.h>
#include <linux/kernel.h>
#define KERNEL #define KERNEL
#include "h/smtstate.h" #include "h/smtstate.h"
@ -1730,20 +1731,18 @@ void fddi_send_antc(struct s_smc *smc, struct fddi_addr *dest)
#endif #endif
#ifdef DEBUG #ifdef DEBUG
#define hextoasc(x) "0123456789abcdef"[x]
char *addr_to_string(struct fddi_addr *addr) char *addr_to_string(struct fddi_addr *addr)
{ {
int i ; int i ;
static char string[6*3] = "****" ; static char string[6*3] = "****" ;
for (i = 0 ; i < 6 ; i++) { for (i = 0 ; i < 6 ; i++) {
string[i*3] = hextoasc((addr->a[i]>>4)&0xf) ; string[i * 3] = hex_asc_hi(addr->a[i]);
string[i*3+1] = hextoasc((addr->a[i])&0xf) ; string[i * 3 + 1] = hex_asc_lo(addr->a[i]);
string[i*3+2] = ':' ; string[i * 3 + 2] = ':';
} }
string[5*3+2] = 0 ; string[5 * 3 + 2] = 0;
return(string) ; return(string);
} }
#endif #endif

View file

@ -1982,8 +1982,6 @@ static void tg3_power_down_phy(struct tg3 *tp)
static int tg3_set_power_state(struct tg3 *tp, pci_power_t state) static int tg3_set_power_state(struct tg3 *tp, pci_power_t state)
{ {
u32 misc_host_ctrl; u32 misc_host_ctrl;
u16 power_control, power_caps;
int pm = tp->pm_cap;
/* Make sure register accesses (indirect or otherwise) /* Make sure register accesses (indirect or otherwise)
* will function correctly. * will function correctly.
@ -1992,18 +1990,10 @@ static int tg3_set_power_state(struct tg3 *tp, pci_power_t state)
TG3PCI_MISC_HOST_CTRL, TG3PCI_MISC_HOST_CTRL,
tp->misc_host_ctrl); tp->misc_host_ctrl);
pci_read_config_word(tp->pdev,
pm + PCI_PM_CTRL,
&power_control);
power_control |= PCI_PM_CTRL_PME_STATUS;
power_control &= ~(PCI_PM_CTRL_STATE_MASK);
switch (state) { switch (state) {
case PCI_D0: case PCI_D0:
power_control |= 0; pci_enable_wake(tp->pdev, state, false);
pci_write_config_word(tp->pdev, pci_set_power_state(tp->pdev, PCI_D0);
pm + PCI_PM_CTRL,
power_control);
udelay(100); /* Delay after power state change */
/* Switch out of Vaux if it is a NIC */ /* Switch out of Vaux if it is a NIC */
if (tp->tg3_flags2 & TG3_FLG2_IS_NIC) if (tp->tg3_flags2 & TG3_FLG2_IS_NIC)
@ -2012,26 +2002,15 @@ static int tg3_set_power_state(struct tg3 *tp, pci_power_t state)
return 0; return 0;
case PCI_D1: case PCI_D1:
power_control |= 1;
break;
case PCI_D2: case PCI_D2:
power_control |= 2;
break;
case PCI_D3hot: case PCI_D3hot:
power_control |= 3;
break; break;
default: default:
printk(KERN_WARNING PFX "%s: Invalid power state (%d) " printk(KERN_ERR PFX "%s: Invalid power state (D%d) requested\n",
"requested.\n", tp->dev->name, state);
tp->dev->name, state);
return -EINVAL; return -EINVAL;
} }
power_control |= PCI_PM_CTRL_PME_ENABLE;
misc_host_ctrl = tr32(TG3PCI_MISC_HOST_CTRL); misc_host_ctrl = tr32(TG3PCI_MISC_HOST_CTRL);
tw32(TG3PCI_MISC_HOST_CTRL, tw32(TG3PCI_MISC_HOST_CTRL,
misc_host_ctrl | MISC_HOST_CTRL_MASK_PCI_INT); misc_host_ctrl | MISC_HOST_CTRL_MASK_PCI_INT);
@ -2109,8 +2088,6 @@ static int tg3_set_power_state(struct tg3 *tp, pci_power_t state)
WOL_DRV_WOL | WOL_DRV_WOL |
WOL_SET_MAGIC_PKT); WOL_SET_MAGIC_PKT);
pci_read_config_word(tp->pdev, pm + PCI_PM_PMC, &power_caps);
if (tp->tg3_flags & TG3_FLAG_WOL_ENABLE) { if (tp->tg3_flags & TG3_FLAG_WOL_ENABLE) {
u32 mac_mode; u32 mac_mode;
@ -2143,8 +2120,8 @@ static int tg3_set_power_state(struct tg3 *tp, pci_power_t state)
if (!(tp->tg3_flags2 & TG3_FLG2_5750_PLUS)) if (!(tp->tg3_flags2 & TG3_FLG2_5750_PLUS))
tw32(MAC_LED_CTRL, tp->led_ctrl); tw32(MAC_LED_CTRL, tp->led_ctrl);
if (((power_caps & PCI_PM_CAP_PME_D3cold) && if (pci_pme_capable(tp->pdev, state) &&
(tp->tg3_flags & TG3_FLAG_WOL_ENABLE))) (tp->tg3_flags & TG3_FLAG_WOL_ENABLE))
mac_mode |= MAC_MODE_MAGIC_PKT_ENABLE; mac_mode |= MAC_MODE_MAGIC_PKT_ENABLE;
tw32_f(MAC_MODE, mac_mode); tw32_f(MAC_MODE, mac_mode);
@ -2236,9 +2213,11 @@ static int tg3_set_power_state(struct tg3 *tp, pci_power_t state)
tg3_write_sig_post_reset(tp, RESET_KIND_SHUTDOWN); tg3_write_sig_post_reset(tp, RESET_KIND_SHUTDOWN);
if (tp->tg3_flags & TG3_FLAG_WOL_ENABLE)
pci_enable_wake(tp->pdev, state, true);
/* Finally, set the new power state. */ /* Finally, set the new power state. */
pci_write_config_word(tp->pdev, pm + PCI_PM_CTRL, power_control); pci_set_power_state(tp->pdev, state);
udelay(100); /* Delay after power state change */
return 0; return 0;
} }
@ -9065,7 +9044,8 @@ static void tg3_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
{ {
struct tg3 *tp = netdev_priv(dev); struct tg3 *tp = netdev_priv(dev);
if (tp->tg3_flags & TG3_FLAG_WOL_CAP) if ((tp->tg3_flags & TG3_FLAG_WOL_CAP) &&
device_can_wakeup(&tp->pdev->dev))
wol->supported = WAKE_MAGIC; wol->supported = WAKE_MAGIC;
else else
wol->supported = 0; wol->supported = 0;
@ -9078,18 +9058,22 @@ static void tg3_get_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
static int tg3_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) static int tg3_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol)
{ {
struct tg3 *tp = netdev_priv(dev); struct tg3 *tp = netdev_priv(dev);
struct device *dp = &tp->pdev->dev;
if (wol->wolopts & ~WAKE_MAGIC) if (wol->wolopts & ~WAKE_MAGIC)
return -EINVAL; return -EINVAL;
if ((wol->wolopts & WAKE_MAGIC) && if ((wol->wolopts & WAKE_MAGIC) &&
!(tp->tg3_flags & TG3_FLAG_WOL_CAP)) !((tp->tg3_flags & TG3_FLAG_WOL_CAP) && device_can_wakeup(dp)))
return -EINVAL; return -EINVAL;
spin_lock_bh(&tp->lock); spin_lock_bh(&tp->lock);
if (wol->wolopts & WAKE_MAGIC) if (wol->wolopts & WAKE_MAGIC) {
tp->tg3_flags |= TG3_FLAG_WOL_ENABLE; tp->tg3_flags |= TG3_FLAG_WOL_ENABLE;
else device_set_wakeup_enable(dp, true);
} else {
tp->tg3_flags &= ~TG3_FLAG_WOL_ENABLE; tp->tg3_flags &= ~TG3_FLAG_WOL_ENABLE;
device_set_wakeup_enable(dp, false);
}
spin_unlock_bh(&tp->lock); spin_unlock_bh(&tp->lock);
return 0; return 0;
@ -11296,7 +11280,8 @@ static void __devinit tg3_get_eeprom_hw_cfg(struct tg3 *tp)
if (val & VCPU_CFGSHDW_ASPM_DBNC) if (val & VCPU_CFGSHDW_ASPM_DBNC)
tp->tg3_flags |= TG3_FLAG_ASPM_WORKAROUND; tp->tg3_flags |= TG3_FLAG_ASPM_WORKAROUND;
if ((val & VCPU_CFGSHDW_WOL_ENABLE) && if ((val & VCPU_CFGSHDW_WOL_ENABLE) &&
(val & VCPU_CFGSHDW_WOL_MAGPKT)) (val & VCPU_CFGSHDW_WOL_MAGPKT) &&
device_may_wakeup(&tp->pdev->dev))
tp->tg3_flags |= TG3_FLAG_WOL_ENABLE; tp->tg3_flags |= TG3_FLAG_WOL_ENABLE;
return; return;
} }
@ -11426,8 +11411,9 @@ static void __devinit tg3_get_eeprom_hw_cfg(struct tg3 *tp)
!(nic_cfg & NIC_SRAM_DATA_CFG_FIBER_WOL)) !(nic_cfg & NIC_SRAM_DATA_CFG_FIBER_WOL))
tp->tg3_flags &= ~TG3_FLAG_WOL_CAP; tp->tg3_flags &= ~TG3_FLAG_WOL_CAP;
if (tp->tg3_flags & TG3_FLAG_WOL_CAP && if ((tp->tg3_flags & TG3_FLAG_WOL_CAP) &&
nic_cfg & NIC_SRAM_DATA_CFG_WOL_ENABLE) (nic_cfg & NIC_SRAM_DATA_CFG_WOL_ENABLE) &&
device_may_wakeup(&tp->pdev->dev))
tp->tg3_flags |= TG3_FLAG_WOL_ENABLE; tp->tg3_flags |= TG3_FLAG_WOL_ENABLE;
if (cfg2 & (1 << 17)) if (cfg2 & (1 << 17))
@ -13613,6 +13599,7 @@ static int tg3_suspend(struct pci_dev *pdev, pm_message_t state)
{ {
struct net_device *dev = pci_get_drvdata(pdev); struct net_device *dev = pci_get_drvdata(pdev);
struct tg3 *tp = netdev_priv(dev); struct tg3 *tp = netdev_priv(dev);
pci_power_t target_state;
int err; int err;
/* PCI register 4 needs to be saved whether netif_running() or not. /* PCI register 4 needs to be saved whether netif_running() or not.
@ -13641,7 +13628,9 @@ static int tg3_suspend(struct pci_dev *pdev, pm_message_t state)
tp->tg3_flags &= ~TG3_FLAG_INIT_COMPLETE; tp->tg3_flags &= ~TG3_FLAG_INIT_COMPLETE;
tg3_full_unlock(tp); tg3_full_unlock(tp);
err = tg3_set_power_state(tp, pci_choose_state(pdev, state)); target_state = pdev->pm_cap ? pci_target_state(pdev) : PCI_D3hot;
err = tg3_set_power_state(tp, target_state);
if (err) { if (err) {
int err2; int err2;

View file

@ -55,12 +55,28 @@
static int dm_read(struct usbnet *dev, u8 reg, u16 length, void *data) static int dm_read(struct usbnet *dev, u8 reg, u16 length, void *data)
{ {
void *buf;
int err = -ENOMEM;
devdbg(dev, "dm_read() reg=0x%02x length=%d", reg, length); devdbg(dev, "dm_read() reg=0x%02x length=%d", reg, length);
return usb_control_msg(dev->udev,
usb_rcvctrlpipe(dev->udev, 0), buf = kmalloc(length, GFP_KERNEL);
DM_READ_REGS, if (!buf)
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE, goto out;
0, reg, data, length, USB_CTRL_SET_TIMEOUT);
err = usb_control_msg(dev->udev,
usb_rcvctrlpipe(dev->udev, 0),
DM_READ_REGS,
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
0, reg, buf, length, USB_CTRL_SET_TIMEOUT);
if (err == length)
memcpy(data, buf, length);
else if (err >= 0)
err = -EINVAL;
kfree(buf);
out:
return err;
} }
static int dm_read_reg(struct usbnet *dev, u8 reg, u8 *value) static int dm_read_reg(struct usbnet *dev, u8 reg, u8 *value)
@ -70,12 +86,28 @@ static int dm_read_reg(struct usbnet *dev, u8 reg, u8 *value)
static int dm_write(struct usbnet *dev, u8 reg, u16 length, void *data) static int dm_write(struct usbnet *dev, u8 reg, u16 length, void *data)
{ {
void *buf = NULL;
int err = -ENOMEM;
devdbg(dev, "dm_write() reg=0x%02x, length=%d", reg, length); devdbg(dev, "dm_write() reg=0x%02x, length=%d", reg, length);
return usb_control_msg(dev->udev,
usb_sndctrlpipe(dev->udev, 0), if (data) {
DM_WRITE_REGS, buf = kmalloc(length, GFP_KERNEL);
USB_DIR_OUT | USB_TYPE_VENDOR |USB_RECIP_DEVICE, if (!buf)
0, reg, data, length, USB_CTRL_SET_TIMEOUT); goto out;
memcpy(buf, data, length);
}
err = usb_control_msg(dev->udev,
usb_sndctrlpipe(dev->udev, 0),
DM_WRITE_REGS,
USB_DIR_OUT | USB_TYPE_VENDOR |USB_RECIP_DEVICE,
0, reg, buf, length, USB_CTRL_SET_TIMEOUT);
kfree(buf);
if (err >= 0 && err < length)
err = -EINVAL;
out:
return err;
} }
static int dm_write_reg(struct usbnet *dev, u8 reg, u8 value) static int dm_write_reg(struct usbnet *dev, u8 reg, u8 value)

View file

@ -337,7 +337,7 @@ static int __init wd_probe1(struct net_device *dev, int ioaddr)
#ifdef CONFIG_NET_POLL_CONTROLLER #ifdef CONFIG_NET_POLL_CONTROLLER
dev->poll_controller = ei_poll; dev->poll_controller = ei_poll;
#endif #endif
NS8390_init(dev, 0); NS8390p_init(dev, 0);
#if 1 #if 1
/* Enable interrupt generation on softconfig cards -- M.U */ /* Enable interrupt generation on softconfig cards -- M.U */

View file

@ -97,6 +97,7 @@ header-y += ioctl.h
header-y += ip6_tunnel.h header-y += ip6_tunnel.h
header-y += ipmi_msgdefs.h header-y += ipmi_msgdefs.h
header-y += ipsec.h header-y += ipsec.h
header-y += ip_vs.h
header-y += ipx.h header-y += ipx.h
header-y += irda.h header-y += irda.h
header-y += iso_fs.h header-y += iso_fs.h

245
include/linux/ip_vs.h Normal file
View file

@ -0,0 +1,245 @@
/*
* IP Virtual Server
* data structure and functionality definitions
*/
#ifndef _IP_VS_H
#define _IP_VS_H
#include <linux/types.h> /* For __beXX types in userland */
#define IP_VS_VERSION_CODE 0x010201
#define NVERSION(version) \
(version >> 16) & 0xFF, \
(version >> 8) & 0xFF, \
version & 0xFF
/*
* Virtual Service Flags
*/
#define IP_VS_SVC_F_PERSISTENT 0x0001 /* persistent port */
#define IP_VS_SVC_F_HASHED 0x0002 /* hashed entry */
/*
* Destination Server Flags
*/
#define IP_VS_DEST_F_AVAILABLE 0x0001 /* server is available */
#define IP_VS_DEST_F_OVERLOAD 0x0002 /* server is overloaded */
/*
* IPVS sync daemon states
*/
#define IP_VS_STATE_NONE 0x0000 /* daemon is stopped */
#define IP_VS_STATE_MASTER 0x0001 /* started as master */
#define IP_VS_STATE_BACKUP 0x0002 /* started as backup */
/*
* IPVS socket options
*/
#define IP_VS_BASE_CTL (64+1024+64) /* base */
#define IP_VS_SO_SET_NONE IP_VS_BASE_CTL /* just peek */
#define IP_VS_SO_SET_INSERT (IP_VS_BASE_CTL+1)
#define IP_VS_SO_SET_ADD (IP_VS_BASE_CTL+2)
#define IP_VS_SO_SET_EDIT (IP_VS_BASE_CTL+3)
#define IP_VS_SO_SET_DEL (IP_VS_BASE_CTL+4)
#define IP_VS_SO_SET_FLUSH (IP_VS_BASE_CTL+5)
#define IP_VS_SO_SET_LIST (IP_VS_BASE_CTL+6)
#define IP_VS_SO_SET_ADDDEST (IP_VS_BASE_CTL+7)
#define IP_VS_SO_SET_DELDEST (IP_VS_BASE_CTL+8)
#define IP_VS_SO_SET_EDITDEST (IP_VS_BASE_CTL+9)
#define IP_VS_SO_SET_TIMEOUT (IP_VS_BASE_CTL+10)
#define IP_VS_SO_SET_STARTDAEMON (IP_VS_BASE_CTL+11)
#define IP_VS_SO_SET_STOPDAEMON (IP_VS_BASE_CTL+12)
#define IP_VS_SO_SET_RESTORE (IP_VS_BASE_CTL+13)
#define IP_VS_SO_SET_SAVE (IP_VS_BASE_CTL+14)
#define IP_VS_SO_SET_ZERO (IP_VS_BASE_CTL+15)
#define IP_VS_SO_SET_MAX IP_VS_SO_SET_ZERO
#define IP_VS_SO_GET_VERSION IP_VS_BASE_CTL
#define IP_VS_SO_GET_INFO (IP_VS_BASE_CTL+1)
#define IP_VS_SO_GET_SERVICES (IP_VS_BASE_CTL+2)
#define IP_VS_SO_GET_SERVICE (IP_VS_BASE_CTL+3)
#define IP_VS_SO_GET_DESTS (IP_VS_BASE_CTL+4)
#define IP_VS_SO_GET_DEST (IP_VS_BASE_CTL+5) /* not used now */
#define IP_VS_SO_GET_TIMEOUT (IP_VS_BASE_CTL+6)
#define IP_VS_SO_GET_DAEMON (IP_VS_BASE_CTL+7)
#define IP_VS_SO_GET_MAX IP_VS_SO_GET_DAEMON
/*
* IPVS Connection Flags
*/
#define IP_VS_CONN_F_FWD_MASK 0x0007 /* mask for the fwd methods */
#define IP_VS_CONN_F_MASQ 0x0000 /* masquerading/NAT */
#define IP_VS_CONN_F_LOCALNODE 0x0001 /* local node */
#define IP_VS_CONN_F_TUNNEL 0x0002 /* tunneling */
#define IP_VS_CONN_F_DROUTE 0x0003 /* direct routing */
#define IP_VS_CONN_F_BYPASS 0x0004 /* cache bypass */
#define IP_VS_CONN_F_SYNC 0x0020 /* entry created by sync */
#define IP_VS_CONN_F_HASHED 0x0040 /* hashed entry */
#define IP_VS_CONN_F_NOOUTPUT 0x0080 /* no output packets */
#define IP_VS_CONN_F_INACTIVE 0x0100 /* not established */
#define IP_VS_CONN_F_OUT_SEQ 0x0200 /* must do output seq adjust */
#define IP_VS_CONN_F_IN_SEQ 0x0400 /* must do input seq adjust */
#define IP_VS_CONN_F_SEQ_MASK 0x0600 /* in/out sequence mask */
#define IP_VS_CONN_F_NO_CPORT 0x0800 /* no client port set yet */
#define IP_VS_CONN_F_TEMPLATE 0x1000 /* template, not connection */
#define IP_VS_SCHEDNAME_MAXLEN 16
#define IP_VS_IFNAME_MAXLEN 16
/*
* The struct ip_vs_service_user and struct ip_vs_dest_user are
* used to set IPVS rules through setsockopt.
*/
struct ip_vs_service_user {
/* virtual service addresses */
u_int16_t protocol;
__be32 addr; /* virtual ip address */
__be16 port;
u_int32_t fwmark; /* firwall mark of service */
/* virtual service options */
char sched_name[IP_VS_SCHEDNAME_MAXLEN];
unsigned flags; /* virtual service flags */
unsigned timeout; /* persistent timeout in sec */
__be32 netmask; /* persistent netmask */
};
struct ip_vs_dest_user {
/* destination server address */
__be32 addr;
__be16 port;
/* real server options */
unsigned conn_flags; /* connection flags */
int weight; /* destination weight */
/* thresholds for active connections */
u_int32_t u_threshold; /* upper threshold */
u_int32_t l_threshold; /* lower threshold */
};
/*
* IPVS statistics object (for user space)
*/
struct ip_vs_stats_user
{
__u32 conns; /* connections scheduled */
__u32 inpkts; /* incoming packets */
__u32 outpkts; /* outgoing packets */
__u64 inbytes; /* incoming bytes */
__u64 outbytes; /* outgoing bytes */
__u32 cps; /* current connection rate */
__u32 inpps; /* current in packet rate */
__u32 outpps; /* current out packet rate */
__u32 inbps; /* current in byte rate */
__u32 outbps; /* current out byte rate */
};
/* The argument to IP_VS_SO_GET_INFO */
struct ip_vs_getinfo {
/* version number */
unsigned int version;
/* size of connection hash table */
unsigned int size;
/* number of virtual services */
unsigned int num_services;
};
/* The argument to IP_VS_SO_GET_SERVICE */
struct ip_vs_service_entry {
/* which service: user fills in these */
u_int16_t protocol;
__be32 addr; /* virtual address */
__be16 port;
u_int32_t fwmark; /* firwall mark of service */
/* service options */
char sched_name[IP_VS_SCHEDNAME_MAXLEN];
unsigned flags; /* virtual service flags */
unsigned timeout; /* persistent timeout */
__be32 netmask; /* persistent netmask */
/* number of real servers */
unsigned int num_dests;
/* statistics */
struct ip_vs_stats_user stats;
};
struct ip_vs_dest_entry {
__be32 addr; /* destination address */
__be16 port;
unsigned conn_flags; /* connection flags */
int weight; /* destination weight */
u_int32_t u_threshold; /* upper threshold */
u_int32_t l_threshold; /* lower threshold */
u_int32_t activeconns; /* active connections */
u_int32_t inactconns; /* inactive connections */
u_int32_t persistconns; /* persistent connections */
/* statistics */
struct ip_vs_stats_user stats;
};
/* The argument to IP_VS_SO_GET_DESTS */
struct ip_vs_get_dests {
/* which service: user fills in these */
u_int16_t protocol;
__be32 addr; /* virtual address */
__be16 port;
u_int32_t fwmark; /* firwall mark of service */
/* number of real servers */
unsigned int num_dests;
/* the real servers */
struct ip_vs_dest_entry entrytable[0];
};
/* The argument to IP_VS_SO_GET_SERVICES */
struct ip_vs_get_services {
/* number of virtual services */
unsigned int num_services;
/* service table */
struct ip_vs_service_entry entrytable[0];
};
/* The argument to IP_VS_SO_GET_TIMEOUT */
struct ip_vs_timeout_user {
int tcp_timeout;
int tcp_fin_timeout;
int udp_timeout;
};
/* The argument to IP_VS_SO_GET_DAEMON */
struct ip_vs_daemon_user {
/* sync daemon state (master/backup) */
int state;
/* multicast interface name */
char mcast_ifn[IP_VS_IFNAME_MAXLEN];
/* SyncID we belong to */
int syncid;
};
#endif /* _IP_VS_H */

View file

@ -440,6 +440,7 @@ static inline void napi_synchronize(const struct napi_struct *n)
enum netdev_queue_state_t enum netdev_queue_state_t
{ {
__QUEUE_STATE_XOFF, __QUEUE_STATE_XOFF,
__QUEUE_STATE_FROZEN,
}; };
struct netdev_queue { struct netdev_queue {
@ -636,7 +637,7 @@ struct net_device
unsigned int real_num_tx_queues; unsigned int real_num_tx_queues;
unsigned long tx_queue_len; /* Max frames per queue allowed */ unsigned long tx_queue_len; /* Max frames per queue allowed */
spinlock_t tx_global_lock;
/* /*
* One part is mostly used on xmit path (device) * One part is mostly used on xmit path (device)
*/ */
@ -1099,6 +1100,11 @@ static inline int netif_queue_stopped(const struct net_device *dev)
return netif_tx_queue_stopped(netdev_get_tx_queue(dev, 0)); return netif_tx_queue_stopped(netdev_get_tx_queue(dev, 0));
} }
static inline int netif_tx_queue_frozen(const struct netdev_queue *dev_queue)
{
return test_bit(__QUEUE_STATE_FROZEN, &dev_queue->state);
}
/** /**
* netif_running - test if up * netif_running - test if up
* @dev: network device * @dev: network device
@ -1475,30 +1481,6 @@ static inline void __netif_tx_lock_bh(struct netdev_queue *txq)
txq->xmit_lock_owner = smp_processor_id(); txq->xmit_lock_owner = smp_processor_id();
} }
/**
* netif_tx_lock - grab network device transmit lock
* @dev: network device
* @cpu: cpu number of lock owner
*
* Get network device transmit lock
*/
static inline void netif_tx_lock(struct net_device *dev)
{
int cpu = smp_processor_id();
unsigned int i;
for (i = 0; i < dev->num_tx_queues; i++) {
struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
__netif_tx_lock(txq, cpu);
}
}
static inline void netif_tx_lock_bh(struct net_device *dev)
{
local_bh_disable();
netif_tx_lock(dev);
}
static inline int __netif_tx_trylock(struct netdev_queue *txq) static inline int __netif_tx_trylock(struct netdev_queue *txq)
{ {
int ok = spin_trylock(&txq->_xmit_lock); int ok = spin_trylock(&txq->_xmit_lock);
@ -1507,11 +1489,6 @@ static inline int __netif_tx_trylock(struct netdev_queue *txq)
return ok; return ok;
} }
static inline int netif_tx_trylock(struct net_device *dev)
{
return __netif_tx_trylock(netdev_get_tx_queue(dev, 0));
}
static inline void __netif_tx_unlock(struct netdev_queue *txq) static inline void __netif_tx_unlock(struct netdev_queue *txq)
{ {
txq->xmit_lock_owner = -1; txq->xmit_lock_owner = -1;
@ -1524,15 +1501,57 @@ static inline void __netif_tx_unlock_bh(struct netdev_queue *txq)
spin_unlock_bh(&txq->_xmit_lock); spin_unlock_bh(&txq->_xmit_lock);
} }
/**
* netif_tx_lock - grab network device transmit lock
* @dev: network device
* @cpu: cpu number of lock owner
*
* Get network device transmit lock
*/
static inline void netif_tx_lock(struct net_device *dev)
{
unsigned int i;
int cpu;
spin_lock(&dev->tx_global_lock);
cpu = smp_processor_id();
for (i = 0; i < dev->num_tx_queues; i++) {
struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
/* We are the only thread of execution doing a
* freeze, but we have to grab the _xmit_lock in
* order to synchronize with threads which are in
* the ->hard_start_xmit() handler and already
* checked the frozen bit.
*/
__netif_tx_lock(txq, cpu);
set_bit(__QUEUE_STATE_FROZEN, &txq->state);
__netif_tx_unlock(txq);
}
}
static inline void netif_tx_lock_bh(struct net_device *dev)
{
local_bh_disable();
netif_tx_lock(dev);
}
static inline void netif_tx_unlock(struct net_device *dev) static inline void netif_tx_unlock(struct net_device *dev)
{ {
unsigned int i; unsigned int i;
for (i = 0; i < dev->num_tx_queues; i++) { for (i = 0; i < dev->num_tx_queues; i++) {
struct netdev_queue *txq = netdev_get_tx_queue(dev, i); struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
__netif_tx_unlock(txq);
}
/* No need to grab the _xmit_lock here. If the
* queue is not stopped for another reason, we
* force a schedule.
*/
clear_bit(__QUEUE_STATE_FROZEN, &txq->state);
if (!test_bit(__QUEUE_STATE_XOFF, &txq->state))
__netif_schedule(txq->qdisc);
}
spin_unlock(&dev->tx_global_lock);
} }
static inline void netif_tx_unlock_bh(struct net_device *dev) static inline void netif_tx_unlock_bh(struct net_device *dev)
@ -1556,13 +1575,18 @@ static inline void netif_tx_unlock_bh(struct net_device *dev)
static inline void netif_tx_disable(struct net_device *dev) static inline void netif_tx_disable(struct net_device *dev)
{ {
unsigned int i; unsigned int i;
int cpu;
netif_tx_lock_bh(dev); local_bh_disable();
cpu = smp_processor_id();
for (i = 0; i < dev->num_tx_queues; i++) { for (i = 0; i < dev->num_tx_queues; i++) {
struct netdev_queue *txq = netdev_get_tx_queue(dev, i); struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
__netif_tx_lock(txq, cpu);
netif_tx_stop_queue(txq); netif_tx_stop_queue(txq);
__netif_tx_unlock(txq);
} }
netif_tx_unlock_bh(dev); local_bh_enable();
} }
static inline void netif_addr_lock(struct net_device *dev) static inline void netif_addr_lock(struct net_device *dev)

View file

@ -30,6 +30,9 @@ enum tcp_conntrack {
/* Be liberal in window checking */ /* Be liberal in window checking */
#define IP_CT_TCP_FLAG_BE_LIBERAL 0x08 #define IP_CT_TCP_FLAG_BE_LIBERAL 0x08
/* Has unacknowledged data */
#define IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED 0x10
struct nf_ct_tcp_flags { struct nf_ct_tcp_flags {
u_int8_t flags; u_int8_t flags;
u_int8_t mask; u_int8_t mask;

View file

@ -243,6 +243,7 @@ typedef unsigned char *sk_buff_data_t;
* @tc_index: Traffic control index * @tc_index: Traffic control index
* @tc_verd: traffic control verdict * @tc_verd: traffic control verdict
* @ndisc_nodetype: router type (from link layer) * @ndisc_nodetype: router type (from link layer)
* @do_not_encrypt: set to prevent encryption of this frame
* @dma_cookie: a cookie to one of several possible DMA operations * @dma_cookie: a cookie to one of several possible DMA operations
* done by skb DMA functions * done by skb DMA functions
* @secmark: security marking * @secmark: security marking

View file

@ -3,254 +3,17 @@
* data structure and functionality definitions * data structure and functionality definitions
*/ */
#ifndef _IP_VS_H #ifndef _NET_IP_VS_H
#define _IP_VS_H #define _NET_IP_VS_H
#include <asm/types.h> /* For __uXX types */
#include <linux/types.h> /* For __beXX types in userland */
#include <linux/sysctl.h> /* For ctl_path */
#define IP_VS_VERSION_CODE 0x010201
#define NVERSION(version) \
(version >> 16) & 0xFF, \
(version >> 8) & 0xFF, \
version & 0xFF
/*
* Virtual Service Flags
*/
#define IP_VS_SVC_F_PERSISTENT 0x0001 /* persistent port */
#define IP_VS_SVC_F_HASHED 0x0002 /* hashed entry */
/*
* Destination Server Flags
*/
#define IP_VS_DEST_F_AVAILABLE 0x0001 /* server is available */
#define IP_VS_DEST_F_OVERLOAD 0x0002 /* server is overloaded */
/*
* IPVS sync daemon states
*/
#define IP_VS_STATE_NONE 0x0000 /* daemon is stopped */
#define IP_VS_STATE_MASTER 0x0001 /* started as master */
#define IP_VS_STATE_BACKUP 0x0002 /* started as backup */
/*
* IPVS socket options
*/
#define IP_VS_BASE_CTL (64+1024+64) /* base */
#define IP_VS_SO_SET_NONE IP_VS_BASE_CTL /* just peek */
#define IP_VS_SO_SET_INSERT (IP_VS_BASE_CTL+1)
#define IP_VS_SO_SET_ADD (IP_VS_BASE_CTL+2)
#define IP_VS_SO_SET_EDIT (IP_VS_BASE_CTL+3)
#define IP_VS_SO_SET_DEL (IP_VS_BASE_CTL+4)
#define IP_VS_SO_SET_FLUSH (IP_VS_BASE_CTL+5)
#define IP_VS_SO_SET_LIST (IP_VS_BASE_CTL+6)
#define IP_VS_SO_SET_ADDDEST (IP_VS_BASE_CTL+7)
#define IP_VS_SO_SET_DELDEST (IP_VS_BASE_CTL+8)
#define IP_VS_SO_SET_EDITDEST (IP_VS_BASE_CTL+9)
#define IP_VS_SO_SET_TIMEOUT (IP_VS_BASE_CTL+10)
#define IP_VS_SO_SET_STARTDAEMON (IP_VS_BASE_CTL+11)
#define IP_VS_SO_SET_STOPDAEMON (IP_VS_BASE_CTL+12)
#define IP_VS_SO_SET_RESTORE (IP_VS_BASE_CTL+13)
#define IP_VS_SO_SET_SAVE (IP_VS_BASE_CTL+14)
#define IP_VS_SO_SET_ZERO (IP_VS_BASE_CTL+15)
#define IP_VS_SO_SET_MAX IP_VS_SO_SET_ZERO
#define IP_VS_SO_GET_VERSION IP_VS_BASE_CTL
#define IP_VS_SO_GET_INFO (IP_VS_BASE_CTL+1)
#define IP_VS_SO_GET_SERVICES (IP_VS_BASE_CTL+2)
#define IP_VS_SO_GET_SERVICE (IP_VS_BASE_CTL+3)
#define IP_VS_SO_GET_DESTS (IP_VS_BASE_CTL+4)
#define IP_VS_SO_GET_DEST (IP_VS_BASE_CTL+5) /* not used now */
#define IP_VS_SO_GET_TIMEOUT (IP_VS_BASE_CTL+6)
#define IP_VS_SO_GET_DAEMON (IP_VS_BASE_CTL+7)
#define IP_VS_SO_GET_MAX IP_VS_SO_GET_DAEMON
/*
* IPVS Connection Flags
*/
#define IP_VS_CONN_F_FWD_MASK 0x0007 /* mask for the fwd methods */
#define IP_VS_CONN_F_MASQ 0x0000 /* masquerading/NAT */
#define IP_VS_CONN_F_LOCALNODE 0x0001 /* local node */
#define IP_VS_CONN_F_TUNNEL 0x0002 /* tunneling */
#define IP_VS_CONN_F_DROUTE 0x0003 /* direct routing */
#define IP_VS_CONN_F_BYPASS 0x0004 /* cache bypass */
#define IP_VS_CONN_F_SYNC 0x0020 /* entry created by sync */
#define IP_VS_CONN_F_HASHED 0x0040 /* hashed entry */
#define IP_VS_CONN_F_NOOUTPUT 0x0080 /* no output packets */
#define IP_VS_CONN_F_INACTIVE 0x0100 /* not established */
#define IP_VS_CONN_F_OUT_SEQ 0x0200 /* must do output seq adjust */
#define IP_VS_CONN_F_IN_SEQ 0x0400 /* must do input seq adjust */
#define IP_VS_CONN_F_SEQ_MASK 0x0600 /* in/out sequence mask */
#define IP_VS_CONN_F_NO_CPORT 0x0800 /* no client port set yet */
#define IP_VS_CONN_F_TEMPLATE 0x1000 /* template, not connection */
/* Move it to better place one day, for now keep it unique */
#define NFC_IPVS_PROPERTY 0x10000
#define IP_VS_SCHEDNAME_MAXLEN 16
#define IP_VS_IFNAME_MAXLEN 16
/*
* The struct ip_vs_service_user and struct ip_vs_dest_user are
* used to set IPVS rules through setsockopt.
*/
struct ip_vs_service_user {
/* virtual service addresses */
u_int16_t protocol;
__be32 addr; /* virtual ip address */
__be16 port;
u_int32_t fwmark; /* firwall mark of service */
/* virtual service options */
char sched_name[IP_VS_SCHEDNAME_MAXLEN];
unsigned flags; /* virtual service flags */
unsigned timeout; /* persistent timeout in sec */
__be32 netmask; /* persistent netmask */
};
struct ip_vs_dest_user {
/* destination server address */
__be32 addr;
__be16 port;
/* real server options */
unsigned conn_flags; /* connection flags */
int weight; /* destination weight */
/* thresholds for active connections */
u_int32_t u_threshold; /* upper threshold */
u_int32_t l_threshold; /* lower threshold */
};
/*
* IPVS statistics object (for user space)
*/
struct ip_vs_stats_user
{
__u32 conns; /* connections scheduled */
__u32 inpkts; /* incoming packets */
__u32 outpkts; /* outgoing packets */
__u64 inbytes; /* incoming bytes */
__u64 outbytes; /* outgoing bytes */
__u32 cps; /* current connection rate */
__u32 inpps; /* current in packet rate */
__u32 outpps; /* current out packet rate */
__u32 inbps; /* current in byte rate */
__u32 outbps; /* current out byte rate */
};
/* The argument to IP_VS_SO_GET_INFO */
struct ip_vs_getinfo {
/* version number */
unsigned int version;
/* size of connection hash table */
unsigned int size;
/* number of virtual services */
unsigned int num_services;
};
/* The argument to IP_VS_SO_GET_SERVICE */
struct ip_vs_service_entry {
/* which service: user fills in these */
u_int16_t protocol;
__be32 addr; /* virtual address */
__be16 port;
u_int32_t fwmark; /* firwall mark of service */
/* service options */
char sched_name[IP_VS_SCHEDNAME_MAXLEN];
unsigned flags; /* virtual service flags */
unsigned timeout; /* persistent timeout */
__be32 netmask; /* persistent netmask */
/* number of real servers */
unsigned int num_dests;
/* statistics */
struct ip_vs_stats_user stats;
};
struct ip_vs_dest_entry {
__be32 addr; /* destination address */
__be16 port;
unsigned conn_flags; /* connection flags */
int weight; /* destination weight */
u_int32_t u_threshold; /* upper threshold */
u_int32_t l_threshold; /* lower threshold */
u_int32_t activeconns; /* active connections */
u_int32_t inactconns; /* inactive connections */
u_int32_t persistconns; /* persistent connections */
/* statistics */
struct ip_vs_stats_user stats;
};
/* The argument to IP_VS_SO_GET_DESTS */
struct ip_vs_get_dests {
/* which service: user fills in these */
u_int16_t protocol;
__be32 addr; /* virtual address */
__be16 port;
u_int32_t fwmark; /* firwall mark of service */
/* number of real servers */
unsigned int num_dests;
/* the real servers */
struct ip_vs_dest_entry entrytable[0];
};
/* The argument to IP_VS_SO_GET_SERVICES */
struct ip_vs_get_services {
/* number of virtual services */
unsigned int num_services;
/* service table */
struct ip_vs_service_entry entrytable[0];
};
/* The argument to IP_VS_SO_GET_TIMEOUT */
struct ip_vs_timeout_user {
int tcp_timeout;
int tcp_fin_timeout;
int udp_timeout;
};
/* The argument to IP_VS_SO_GET_DAEMON */
struct ip_vs_daemon_user {
/* sync daemon state (master/backup) */
int state;
/* multicast interface name */
char mcast_ifn[IP_VS_IFNAME_MAXLEN];
/* SyncID we belong to */
int syncid;
};
#include <linux/ip_vs.h> /* definitions shared with userland */
/* old ipvsadm versions still include this file directly */
#ifdef __KERNEL__ #ifdef __KERNEL__
#include <asm/types.h> /* for __uXX types */
#include <linux/sysctl.h> /* for ctl_path */
#include <linux/list.h> /* for struct list_head */ #include <linux/list.h> /* for struct list_head */
#include <linux/spinlock.h> /* for struct rwlock_t */ #include <linux/spinlock.h> /* for struct rwlock_t */
#include <asm/atomic.h> /* for struct atomic_t */ #include <asm/atomic.h> /* for struct atomic_t */
@ -981,4 +744,4 @@ static inline __wsum ip_vs_check_diff2(__be16 old, __be16 new, __wsum oldsum)
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* _IP_VS_H */ #endif /* _NET_IP_VS_H */

View file

@ -56,23 +56,12 @@ static u32 __random32(struct rnd_state *state)
return (state->s1 ^ state->s2 ^ state->s3); return (state->s1 ^ state->s2 ^ state->s3);
} }
static void __set_random32(struct rnd_state *state, unsigned long s) /*
* Handle minimum values for seeds
*/
static inline u32 __seed(u32 x, u32 m)
{ {
if (s == 0) return (x < m) ? x + m : x;
s = 1; /* default seed is 1 */
#define LCG(n) (69069 * n)
state->s1 = LCG(s);
state->s2 = LCG(state->s1);
state->s3 = LCG(state->s2);
/* "warm it up" */
__random32(state);
__random32(state);
__random32(state);
__random32(state);
__random32(state);
__random32(state);
} }
/** /**
@ -107,7 +96,7 @@ void srandom32(u32 entropy)
*/ */
for_each_possible_cpu (i) { for_each_possible_cpu (i) {
struct rnd_state *state = &per_cpu(net_rand_state, i); struct rnd_state *state = &per_cpu(net_rand_state, i);
__set_random32(state, state->s1 ^ entropy); state->s1 = __seed(state->s1 ^ entropy, 1);
} }
} }
EXPORT_SYMBOL(srandom32); EXPORT_SYMBOL(srandom32);
@ -122,7 +111,19 @@ static int __init random32_init(void)
for_each_possible_cpu(i) { for_each_possible_cpu(i) {
struct rnd_state *state = &per_cpu(net_rand_state,i); struct rnd_state *state = &per_cpu(net_rand_state,i);
__set_random32(state, i + jiffies);
#define LCG(x) ((x) * 69069) /* super-duper LCG */
state->s1 = __seed(LCG(i + jiffies), 1);
state->s2 = __seed(LCG(state->s1), 7);
state->s3 = __seed(LCG(state->s2), 15);
/* "warm it up" */
__random32(state);
__random32(state);
__random32(state);
__random32(state);
__random32(state);
__random32(state);
} }
return 0; return 0;
} }
@ -135,13 +136,18 @@ core_initcall(random32_init);
static int __init random32_reseed(void) static int __init random32_reseed(void)
{ {
int i; int i;
unsigned long seed;
for_each_possible_cpu(i) { for_each_possible_cpu(i) {
struct rnd_state *state = &per_cpu(net_rand_state,i); struct rnd_state *state = &per_cpu(net_rand_state,i);
u32 seeds[3];
get_random_bytes(&seed, sizeof(seed)); get_random_bytes(&seeds, sizeof(seeds));
__set_random32(state, seed); state->s1 = __seed(seeds[0], 1);
state->s2 = __seed(seeds[1], 7);
state->s3 = __seed(seeds[2], 15);
/* mix it in */
__random32(state);
} }
return 0; return 0;
} }

View file

@ -62,11 +62,13 @@ static void MPOA_cache_impos_rcvd(struct k_message *msg, struct mpoa_client *mpc
static void set_mpc_ctrl_addr_rcvd(struct k_message *mesg, struct mpoa_client *mpc); static void set_mpc_ctrl_addr_rcvd(struct k_message *mesg, struct mpoa_client *mpc);
static void set_mps_mac_addr_rcvd(struct k_message *mesg, struct mpoa_client *mpc); static void set_mps_mac_addr_rcvd(struct k_message *mesg, struct mpoa_client *mpc);
static uint8_t *copy_macs(struct mpoa_client *mpc, uint8_t *router_mac, static const uint8_t *copy_macs(struct mpoa_client *mpc,
uint8_t *tlvs, uint8_t mps_macs, uint8_t device_type); const uint8_t *router_mac,
const uint8_t *tlvs, uint8_t mps_macs,
uint8_t device_type);
static void purge_egress_shortcut(struct atm_vcc *vcc, eg_cache_entry *entry); static void purge_egress_shortcut(struct atm_vcc *vcc, eg_cache_entry *entry);
static void send_set_mps_ctrl_addr(char *addr, struct mpoa_client *mpc); static void send_set_mps_ctrl_addr(const char *addr, struct mpoa_client *mpc);
static void mpoad_close(struct atm_vcc *vcc); static void mpoad_close(struct atm_vcc *vcc);
static int msg_from_mpoad(struct atm_vcc *vcc, struct sk_buff *skb); static int msg_from_mpoad(struct atm_vcc *vcc, struct sk_buff *skb);
@ -351,12 +353,12 @@ static const char *mpoa_device_type_string(char type)
* lec sees a TLV it uses the pointer to call this function. * lec sees a TLV it uses the pointer to call this function.
* *
*/ */
static void lane2_assoc_ind(struct net_device *dev, uint8_t *mac_addr, static void lane2_assoc_ind(struct net_device *dev, const u8 *mac_addr,
uint8_t *tlvs, uint32_t sizeoftlvs) const u8 *tlvs, u32 sizeoftlvs)
{ {
uint32_t type; uint32_t type;
uint8_t length, mpoa_device_type, number_of_mps_macs; uint8_t length, mpoa_device_type, number_of_mps_macs;
uint8_t *end_of_tlvs; const uint8_t *end_of_tlvs;
struct mpoa_client *mpc; struct mpoa_client *mpc;
mpoa_device_type = number_of_mps_macs = 0; /* silence gcc */ mpoa_device_type = number_of_mps_macs = 0; /* silence gcc */
@ -430,8 +432,10 @@ static void lane2_assoc_ind(struct net_device *dev, uint8_t *mac_addr,
* plus the possible MAC address(es) to mpc->mps_macs. * plus the possible MAC address(es) to mpc->mps_macs.
* For a freshly allocated MPOA client mpc->mps_macs == 0. * For a freshly allocated MPOA client mpc->mps_macs == 0.
*/ */
static uint8_t *copy_macs(struct mpoa_client *mpc, uint8_t *router_mac, static const uint8_t *copy_macs(struct mpoa_client *mpc,
uint8_t *tlvs, uint8_t mps_macs, uint8_t device_type) const uint8_t *router_mac,
const uint8_t *tlvs, uint8_t mps_macs,
uint8_t device_type)
{ {
int num_macs; int num_macs;
num_macs = (mps_macs > 1) ? mps_macs : 1; num_macs = (mps_macs > 1) ? mps_macs : 1;
@ -811,7 +815,7 @@ static int atm_mpoa_mpoad_attach (struct atm_vcc *vcc, int arg)
return arg; return arg;
} }
static void send_set_mps_ctrl_addr(char *addr, struct mpoa_client *mpc) static void send_set_mps_ctrl_addr(const char *addr, struct mpoa_client *mpc)
{ {
struct k_message mesg; struct k_message mesg;

View file

@ -68,10 +68,17 @@ static int br_dev_stop(struct net_device *dev)
static int br_change_mtu(struct net_device *dev, int new_mtu) static int br_change_mtu(struct net_device *dev, int new_mtu)
{ {
if (new_mtu < 68 || new_mtu > br_min_mtu(netdev_priv(dev))) struct net_bridge *br = netdev_priv(dev);
if (new_mtu < 68 || new_mtu > br_min_mtu(br))
return -EINVAL; return -EINVAL;
dev->mtu = new_mtu; dev->mtu = new_mtu;
#ifdef CONFIG_BRIDGE_NETFILTER
/* remember the MTU in the rtable for PMTU */
br->fake_rtable.u.dst.metrics[RTAX_MTU - 1] = new_mtu;
#endif
return 0; return 0;
} }

View file

@ -202,6 +202,9 @@ static struct net_device *new_bridge_dev(const char *name)
br->topology_change = 0; br->topology_change = 0;
br->topology_change_detected = 0; br->topology_change_detected = 0;
br->ageing_time = 300 * HZ; br->ageing_time = 300 * HZ;
br_netfilter_rtable_init(br);
INIT_LIST_HEAD(&br->age_list); INIT_LIST_HEAD(&br->age_list);
br_stp_timer_init(br); br_stp_timer_init(br);

View file

@ -101,33 +101,30 @@ static inline __be16 pppoe_proto(const struct sk_buff *skb)
pppoe_proto(skb) == htons(PPP_IPV6) && \ pppoe_proto(skb) == htons(PPP_IPV6) && \
brnf_filter_pppoe_tagged) brnf_filter_pppoe_tagged)
/* We need these fake structures to make netfilter happy -- /*
* lots of places assume that skb->dst != NULL, which isn't * Initialize bogus route table used to keep netfilter happy.
* all that unreasonable.
*
* Currently, we fill in the PMTU entry because netfilter * Currently, we fill in the PMTU entry because netfilter
* refragmentation needs it, and the rt_flags entry because * refragmentation needs it, and the rt_flags entry because
* ipt_REJECT needs it. Future netfilter modules might * ipt_REJECT needs it. Future netfilter modules might
* require us to fill additional fields. */ * require us to fill additional fields.
static struct net_device __fake_net_device = { */
.hard_header_len = ETH_HLEN, void br_netfilter_rtable_init(struct net_bridge *br)
#ifdef CONFIG_NET_NS {
.nd_net = &init_net, struct rtable *rt = &br->fake_rtable;
#endif
};
static struct rtable __fake_rtable = { atomic_set(&rt->u.dst.__refcnt, 1);
.u = { rt->u.dst.dev = &br->dev;
.dst = { rt->u.dst.path = &rt->u.dst;
.__refcnt = ATOMIC_INIT(1), rt->u.dst.metrics[RTAX_MTU - 1] = 1500;
.dev = &__fake_net_device, rt->u.dst.flags = DST_NOXFRM;
.path = &__fake_rtable.u.dst, }
.metrics = {[RTAX_MTU - 1] = 1500},
.flags = DST_NOXFRM, static inline struct rtable *bridge_parent_rtable(const struct net_device *dev)
} {
}, struct net_bridge_port *port = rcu_dereference(dev->br_port);
.rt_flags = 0,
}; return port ? &port->br->fake_rtable : NULL;
}
static inline struct net_device *bridge_parent(const struct net_device *dev) static inline struct net_device *bridge_parent(const struct net_device *dev)
{ {
@ -226,8 +223,12 @@ static int br_nf_pre_routing_finish_ipv6(struct sk_buff *skb)
} }
nf_bridge->mask ^= BRNF_NF_BRIDGE_PREROUTING; nf_bridge->mask ^= BRNF_NF_BRIDGE_PREROUTING;
skb->rtable = &__fake_rtable; skb->rtable = bridge_parent_rtable(nf_bridge->physindev);
dst_hold(&__fake_rtable.u.dst); if (!skb->rtable) {
kfree_skb(skb);
return 0;
}
dst_hold(&skb->rtable->u.dst);
skb->dev = nf_bridge->physindev; skb->dev = nf_bridge->physindev;
nf_bridge_push_encap_header(skb); nf_bridge_push_encap_header(skb);
@ -391,8 +392,12 @@ bridged_dnat:
skb->pkt_type = PACKET_HOST; skb->pkt_type = PACKET_HOST;
} }
} else { } else {
skb->rtable = &__fake_rtable; skb->rtable = bridge_parent_rtable(nf_bridge->physindev);
dst_hold(&__fake_rtable.u.dst); if (!skb->rtable) {
kfree_skb(skb);
return 0;
}
dst_hold(&skb->rtable->u.dst);
} }
skb->dev = nf_bridge->physindev; skb->dev = nf_bridge->physindev;
@ -611,8 +616,8 @@ static unsigned int br_nf_local_in(unsigned int hook, struct sk_buff *skb,
const struct net_device *out, const struct net_device *out,
int (*okfn)(struct sk_buff *)) int (*okfn)(struct sk_buff *))
{ {
if (skb->rtable == &__fake_rtable) { if (skb->rtable && skb->rtable == bridge_parent_rtable(in)) {
dst_release(&__fake_rtable.u.dst); dst_release(&skb->rtable->u.dst);
skb->rtable = NULL; skb->rtable = NULL;
} }

View file

@ -15,6 +15,7 @@
#include <linux/netdevice.h> #include <linux/netdevice.h>
#include <linux/if_bridge.h> #include <linux/if_bridge.h>
#include <net/route.h>
#define BR_HASH_BITS 8 #define BR_HASH_BITS 8
#define BR_HASH_SIZE (1 << BR_HASH_BITS) #define BR_HASH_SIZE (1 << BR_HASH_BITS)
@ -92,6 +93,9 @@ struct net_bridge
struct hlist_head hash[BR_HASH_SIZE]; struct hlist_head hash[BR_HASH_SIZE];
struct list_head age_list; struct list_head age_list;
unsigned long feature_mask; unsigned long feature_mask;
#ifdef CONFIG_BRIDGE_NETFILTER
struct rtable fake_rtable;
#endif
unsigned long flags; unsigned long flags;
#define BR_SET_MAC_ADDR 0x00000001 #define BR_SET_MAC_ADDR 0x00000001
@ -197,9 +201,11 @@ extern int br_ioctl_deviceless_stub(struct net *net, unsigned int cmd, void __us
#ifdef CONFIG_BRIDGE_NETFILTER #ifdef CONFIG_BRIDGE_NETFILTER
extern int br_netfilter_init(void); extern int br_netfilter_init(void);
extern void br_netfilter_fini(void); extern void br_netfilter_fini(void);
extern void br_netfilter_rtable_init(struct net_bridge *);
#else #else
#define br_netfilter_init() (0) #define br_netfilter_init() (0)
#define br_netfilter_fini() do { } while(0) #define br_netfilter_fini() do { } while(0)
#define br_netfilter_rtable_init(x)
#endif #endif
/* br_stp.c */ /* br_stp.c */

View file

@ -4200,6 +4200,7 @@ static void netdev_init_queues(struct net_device *dev)
{ {
netdev_init_one_queue(dev, &dev->rx_queue, NULL); netdev_init_one_queue(dev, &dev->rx_queue, NULL);
netdev_for_each_tx_queue(dev, netdev_init_one_queue, NULL); netdev_for_each_tx_queue(dev, netdev_init_one_queue, NULL);
spin_lock_init(&dev->tx_global_lock);
} }
/** /**

View file

@ -70,6 +70,7 @@ static void queue_process(struct work_struct *work)
local_irq_save(flags); local_irq_save(flags);
__netif_tx_lock(txq, smp_processor_id()); __netif_tx_lock(txq, smp_processor_id());
if (netif_tx_queue_stopped(txq) || if (netif_tx_queue_stopped(txq) ||
netif_tx_queue_frozen(txq) ||
dev->hard_start_xmit(skb, dev) != NETDEV_TX_OK) { dev->hard_start_xmit(skb, dev) != NETDEV_TX_OK) {
skb_queue_head(&npinfo->txq, skb); skb_queue_head(&npinfo->txq, skb);
__netif_tx_unlock(txq); __netif_tx_unlock(txq);

View file

@ -3305,6 +3305,7 @@ static __inline__ void pktgen_xmit(struct pktgen_dev *pkt_dev)
txq = netdev_get_tx_queue(odev, queue_map); txq = netdev_get_tx_queue(odev, queue_map);
if (netif_tx_queue_stopped(txq) || if (netif_tx_queue_stopped(txq) ||
netif_tx_queue_frozen(txq) ||
need_resched()) { need_resched()) {
idle_start = getCurUs(); idle_start = getCurUs();
@ -3320,7 +3321,8 @@ static __inline__ void pktgen_xmit(struct pktgen_dev *pkt_dev)
pkt_dev->idle_acc += getCurUs() - idle_start; pkt_dev->idle_acc += getCurUs() - idle_start;
if (netif_tx_queue_stopped(txq)) { if (netif_tx_queue_stopped(txq) ||
netif_tx_queue_frozen(txq)) {
pkt_dev->next_tx_us = getCurUs(); /* TODO */ pkt_dev->next_tx_us = getCurUs(); /* TODO */
pkt_dev->next_tx_ns = 0; pkt_dev->next_tx_ns = 0;
goto out; /* Try the next interface */ goto out; /* Try the next interface */
@ -3352,7 +3354,8 @@ static __inline__ void pktgen_xmit(struct pktgen_dev *pkt_dev)
txq = netdev_get_tx_queue(odev, queue_map); txq = netdev_get_tx_queue(odev, queue_map);
__netif_tx_lock_bh(txq); __netif_tx_lock_bh(txq);
if (!netif_tx_queue_stopped(txq)) { if (!netif_tx_queue_stopped(txq) &&
!netif_tx_queue_frozen(txq)) {
atomic_inc(&(pkt_dev->skb->users)); atomic_inc(&(pkt_dev->skb->users));
retry_now: retry_now:

View file

@ -475,11 +475,10 @@ static void arp_print(struct arp_payload *payload)
#define HBUFFERLEN 30 #define HBUFFERLEN 30
char hbuffer[HBUFFERLEN]; char hbuffer[HBUFFERLEN];
int j,k; int j,k;
const char hexbuf[]= "0123456789abcdef";
for (k=0, j=0; k < HBUFFERLEN-3 && j < ETH_ALEN; j++) { for (k=0, j=0; k < HBUFFERLEN-3 && j < ETH_ALEN; j++) {
hbuffer[k++]=hexbuf[(payload->src_hw[j]>>4)&15]; hbuffer[k++] = hex_asc_hi(payload->src_hw[j]);
hbuffer[k++]=hexbuf[payload->src_hw[j]&15]; hbuffer[k++] = hex_asc_lo(payload->src_hw[j]);
hbuffer[k++]=':'; hbuffer[k++]=':';
} }
hbuffer[--k]='\0'; hbuffer[--k]='\0';

View file

@ -305,10 +305,10 @@ static void recent_mt_destroy(const struct xt_match *match, void *matchinfo)
spin_lock_bh(&recent_lock); spin_lock_bh(&recent_lock);
list_del(&t->list); list_del(&t->list);
spin_unlock_bh(&recent_lock); spin_unlock_bh(&recent_lock);
recent_table_flush(t);
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
remove_proc_entry(t->name, proc_dir); remove_proc_entry(t->name, proc_dir);
#endif #endif
recent_table_flush(t);
kfree(t); kfree(t);
} }
mutex_unlock(&recent_mutex); mutex_unlock(&recent_mutex);

View file

@ -3223,7 +3223,9 @@ int __init ip_rt_init(void)
*/ */
void __init ip_static_sysctl_init(void) void __init ip_static_sysctl_init(void)
{ {
#ifdef CONFIG_SYSCTL
register_sysctl_paths(ipv4_route_path, ipv4_route_table); register_sysctl_paths(ipv4_route_path, ipv4_route_table);
#endif
} }
#endif #endif

View file

@ -655,8 +655,8 @@ static void tcp_v4_send_ack(struct sk_buff *skb, u32 seq, u32 ack,
rep.th.doff = arg.iov[0].iov_len/4; rep.th.doff = arg.iov[0].iov_len/4;
tcp_v4_md5_hash_hdr((__u8 *) &rep.opt[offset], tcp_v4_md5_hash_hdr((__u8 *) &rep.opt[offset],
key, ip_hdr(skb)->daddr, key, ip_hdr(skb)->saddr,
ip_hdr(skb)->saddr, &rep.th); ip_hdr(skb)->daddr, &rep.th);
} }
#endif #endif
arg.csum = csum_tcpudp_nofold(ip_hdr(skb)->daddr, arg.csum = csum_tcpudp_nofold(ip_hdr(skb)->daddr,

View file

@ -236,6 +236,10 @@ int ip6_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl,
skb_reset_network_header(skb); skb_reset_network_header(skb);
hdr = ipv6_hdr(skb); hdr = ipv6_hdr(skb);
/* Allow local fragmentation. */
if (ipfragok)
skb->local_df = 1;
/* /*
* Fill in the IPv6 header * Fill in the IPv6 header
*/ */

View file

@ -748,7 +748,7 @@ static int tcp_v6_md5_hash_pseudoheader(struct tcp_md5sig_pool *hp,
ipv6_addr_copy(&bp->saddr, saddr); ipv6_addr_copy(&bp->saddr, saddr);
ipv6_addr_copy(&bp->daddr, daddr); ipv6_addr_copy(&bp->daddr, daddr);
bp->protocol = cpu_to_be32(IPPROTO_TCP); bp->protocol = cpu_to_be32(IPPROTO_TCP);
bp->len = cpu_to_be16(nbytes); bp->len = cpu_to_be32(nbytes);
sg_init_one(&sg, bp, sizeof(*bp)); sg_init_one(&sg, bp, sizeof(*bp));
return crypto_hash_update(&hp->md5_desc, &sg, sizeof(*bp)); return crypto_hash_update(&hp->md5_desc, &sg, sizeof(*bp));
@ -1094,8 +1094,8 @@ static void tcp_v6_send_ack(struct sk_buff *skb, u32 seq, u32 ack, u32 win, u32
*topt++ = htonl((TCPOPT_NOP << 24) | (TCPOPT_NOP << 16) | *topt++ = htonl((TCPOPT_NOP << 24) | (TCPOPT_NOP << 16) |
(TCPOPT_MD5SIG << 8) | TCPOLEN_MD5SIG); (TCPOPT_MD5SIG << 8) | TCPOLEN_MD5SIG);
tcp_v6_md5_hash_hdr((__u8 *)topt, key, tcp_v6_md5_hash_hdr((__u8 *)topt, key,
&ipv6_hdr(skb)->daddr, &ipv6_hdr(skb)->saddr,
&ipv6_hdr(skb)->saddr, t1); &ipv6_hdr(skb)->daddr, t1);
} }
#endif #endif

View file

@ -67,7 +67,8 @@ static const char *const tcp_conntrack_names[] = {
/* RFC1122 says the R2 limit should be at least 100 seconds. /* RFC1122 says the R2 limit should be at least 100 seconds.
Linux uses 15 packets as limit, which corresponds Linux uses 15 packets as limit, which corresponds
to ~13-30min depending on RTO. */ to ~13-30min depending on RTO. */
static unsigned int nf_ct_tcp_timeout_max_retrans __read_mostly = 5 MINS; static unsigned int nf_ct_tcp_timeout_max_retrans __read_mostly = 5 MINS;
static unsigned int nf_ct_tcp_timeout_unacknowledged __read_mostly = 5 MINS;
static unsigned int tcp_timeouts[TCP_CONNTRACK_MAX] __read_mostly = { static unsigned int tcp_timeouts[TCP_CONNTRACK_MAX] __read_mostly = {
[TCP_CONNTRACK_SYN_SENT] = 2 MINS, [TCP_CONNTRACK_SYN_SENT] = 2 MINS,
@ -625,8 +626,10 @@ static bool tcp_in_window(const struct nf_conn *ct,
swin = win + (sack - ack); swin = win + (sack - ack);
if (sender->td_maxwin < swin) if (sender->td_maxwin < swin)
sender->td_maxwin = swin; sender->td_maxwin = swin;
if (after(end, sender->td_end)) if (after(end, sender->td_end)) {
sender->td_end = end; sender->td_end = end;
sender->flags |= IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED;
}
/* /*
* Update receiver data. * Update receiver data.
*/ */
@ -637,6 +640,8 @@ static bool tcp_in_window(const struct nf_conn *ct,
if (win == 0) if (win == 0)
receiver->td_maxend++; receiver->td_maxend++;
} }
if (ack == receiver->td_end)
receiver->flags &= ~IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED;
/* /*
* Check retransmissions. * Check retransmissions.
@ -951,9 +956,16 @@ static int tcp_packet(struct nf_conn *ct,
if (old_state != new_state if (old_state != new_state
&& new_state == TCP_CONNTRACK_FIN_WAIT) && new_state == TCP_CONNTRACK_FIN_WAIT)
ct->proto.tcp.seen[dir].flags |= IP_CT_TCP_FLAG_CLOSE_INIT; ct->proto.tcp.seen[dir].flags |= IP_CT_TCP_FLAG_CLOSE_INIT;
timeout = ct->proto.tcp.retrans >= nf_ct_tcp_max_retrans
&& tcp_timeouts[new_state] > nf_ct_tcp_timeout_max_retrans if (ct->proto.tcp.retrans >= nf_ct_tcp_max_retrans &&
? nf_ct_tcp_timeout_max_retrans : tcp_timeouts[new_state]; tcp_timeouts[new_state] > nf_ct_tcp_timeout_max_retrans)
timeout = nf_ct_tcp_timeout_max_retrans;
else if ((ct->proto.tcp.seen[0].flags | ct->proto.tcp.seen[1].flags) &
IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED &&
tcp_timeouts[new_state] > nf_ct_tcp_timeout_unacknowledged)
timeout = nf_ct_tcp_timeout_unacknowledged;
else
timeout = tcp_timeouts[new_state];
write_unlock_bh(&tcp_lock); write_unlock_bh(&tcp_lock);
nf_conntrack_event_cache(IPCT_PROTOINFO_VOLATILE, skb); nf_conntrack_event_cache(IPCT_PROTOINFO_VOLATILE, skb);
@ -1235,6 +1247,13 @@ static struct ctl_table tcp_sysctl_table[] = {
.mode = 0644, .mode = 0644,
.proc_handler = &proc_dointvec_jiffies, .proc_handler = &proc_dointvec_jiffies,
}, },
{
.procname = "nf_conntrack_tcp_timeout_unacknowledged",
.data = &nf_ct_tcp_timeout_unacknowledged,
.maxlen = sizeof(unsigned int),
.mode = 0644,
.proc_handler = &proc_dointvec_jiffies,
},
{ {
.ctl_name = NET_NF_CONNTRACK_TCP_LOOSE, .ctl_name = NET_NF_CONNTRACK_TCP_LOOSE,
.procname = "nf_conntrack_tcp_loose", .procname = "nf_conntrack_tcp_loose",

View file

@ -367,9 +367,7 @@ static void htable_gc(unsigned long htlong)
static void htable_destroy(struct xt_hashlimit_htable *hinfo) static void htable_destroy(struct xt_hashlimit_htable *hinfo)
{ {
/* remove timer, if it is pending */ del_timer_sync(&hinfo->timer);
if (timer_pending(&hinfo->timer))
del_timer(&hinfo->timer);
/* remove proc entry */ /* remove proc entry */
remove_proc_entry(hinfo->pde->name, remove_proc_entry(hinfo->pde->name,

View file

@ -135,7 +135,8 @@ static inline int qdisc_restart(struct Qdisc *q)
txq = netdev_get_tx_queue(dev, skb_get_queue_mapping(skb)); txq = netdev_get_tx_queue(dev, skb_get_queue_mapping(skb));
HARD_TX_LOCK(dev, txq, smp_processor_id()); HARD_TX_LOCK(dev, txq, smp_processor_id());
if (!netif_subqueue_stopped(dev, skb)) if (!netif_tx_queue_stopped(txq) &&
!netif_tx_queue_frozen(txq))
ret = dev_hard_start_xmit(skb, dev, txq); ret = dev_hard_start_xmit(skb, dev, txq);
HARD_TX_UNLOCK(dev, txq); HARD_TX_UNLOCK(dev, txq);
@ -162,7 +163,8 @@ static inline int qdisc_restart(struct Qdisc *q)
break; break;
} }
if (ret && netif_tx_queue_stopped(txq)) if (ret && (netif_tx_queue_stopped(txq) ||
netif_tx_queue_frozen(txq)))
ret = 0; ret = 0;
return ret; return ret;

View file

@ -305,10 +305,11 @@ restart:
switch (teql_resolve(skb, skb_res, slave)) { switch (teql_resolve(skb, skb_res, slave)) {
case 0: case 0:
if (netif_tx_trylock(slave)) { if (__netif_tx_trylock(slave_txq)) {
if (!__netif_subqueue_stopped(slave, subq) && if (!netif_tx_queue_stopped(slave_txq) &&
!netif_tx_queue_frozen(slave_txq) &&
slave->hard_start_xmit(skb, slave) == 0) { slave->hard_start_xmit(skb, slave) == 0) {
netif_tx_unlock(slave); __netif_tx_unlock(slave_txq);
master->slaves = NEXT_SLAVE(q); master->slaves = NEXT_SLAVE(q);
netif_wake_queue(dev); netif_wake_queue(dev);
master->stats.tx_packets++; master->stats.tx_packets++;
@ -316,7 +317,7 @@ restart:
qdisc_pkt_len(skb); qdisc_pkt_len(skb);
return 0; return 0;
} }
netif_tx_unlock(slave); __netif_tx_unlock(slave_txq);
} }
if (netif_queue_stopped(dev)) if (netif_queue_stopped(dev))
busy = 1; busy = 1;