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:
commit
9a5467fd60
73 changed files with 2008 additions and 1292 deletions
|
@ -18,6 +18,7 @@
|
|||
#include <linux/timer.h>
|
||||
#include <linux/ata_platform.h>
|
||||
#include <linux/mv643xx_eth.h>
|
||||
#include <linux/ethtool.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.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 = {
|
||||
.phy_addr = -1,
|
||||
.speed = SPEED_1000,
|
||||
.duplex = DUPLEX_FULL,
|
||||
};
|
||||
|
||||
static struct mv_sata_platform_data rd88f6281_sata_data = {
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include <linux/irq.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/mv643xx_eth.h>
|
||||
#include <linux/ethtool.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/gpio.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 = {
|
||||
.phy_addr = -1,
|
||||
.speed = SPEED_1000,
|
||||
.duplex = DUPLEX_FULL,
|
||||
};
|
||||
|
||||
static void __init rd88f5181l_fxo_init(void)
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include <linux/irq.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/mv643xx_eth.h>
|
||||
#include <linux/ethtool.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <asm/mach-types.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 = {
|
||||
.phy_addr = -1,
|
||||
.speed = SPEED_1000,
|
||||
.duplex = DUPLEX_FULL,
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata rd88f5181l_ge_i2c_rtc = {
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include <linux/delay.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/mv643xx_eth.h>
|
||||
#include <linux/ethtool.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/gpio.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 = {
|
||||
.phy_addr = -1,
|
||||
.speed = SPEED_1000,
|
||||
.duplex = DUPLEX_FULL,
|
||||
};
|
||||
|
||||
static void __init wnr854t_init(void)
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include <linux/delay.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/mv643xx_eth.h>
|
||||
#include <linux/ethtool.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/gpio.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 = {
|
||||
.phy_addr = -1,
|
||||
.speed = SPEED_1000,
|
||||
.duplex = DUPLEX_FULL,
|
||||
};
|
||||
|
||||
static void __init wrt350n_v2_init(void)
|
||||
|
|
|
@ -156,8 +156,8 @@ static void ia_hack_tcq(IADEV *dev) {
|
|||
}
|
||||
iavcc_r->vc_desc_cnt--;
|
||||
dev->desc_tbl[desc1 -1].timestamp = 0;
|
||||
IF_EVENT(printk("ia_hack: return_q skb = 0x%x desc = %d\n",
|
||||
(u32)dev->desc_tbl[desc1 -1].txskb, desc1);)
|
||||
IF_EVENT(printk("ia_hack: return_q skb = 0x%p desc = %d\n",
|
||||
dev->desc_tbl[desc1 -1].txskb, desc1);)
|
||||
if (iavcc_r->pcr < dev->rate_limit) {
|
||||
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)
|
||||
|
@ -527,8 +527,8 @@ static int ia_cbr_setup (IADEV *dev, struct atm_vcc *vcc) {
|
|||
inc = 0;
|
||||
testSlot = idealSlot;
|
||||
TstSchedTbl = (u16*)(SchedTbl+testSlot); //set index and read in value
|
||||
IF_CBR(printk("CBR Testslot 0x%x AT Location 0x%x, NumToAssign=%d\n",
|
||||
testSlot, (u32)TstSchedTbl,toBeAssigned);)
|
||||
IF_CBR(printk("CBR Testslot 0x%x AT Location 0x%p, NumToAssign=%d\n",
|
||||
testSlot, TstSchedTbl,toBeAssigned);)
|
||||
memcpy((caddr_t)&cbrVC,(caddr_t)TstSchedTbl,sizeof(cbrVC));
|
||||
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;
|
||||
if (testSlot < 0) { // Wrap if necessary
|
||||
testSlot += dev->CbrTotEntries;
|
||||
IF_CBR(printk("Testslot Wrap. STable Start=0x%x,Testslot=%d\n",
|
||||
(u32)SchedTbl,testSlot);)
|
||||
IF_CBR(printk("Testslot Wrap. STable Start=0x%p,Testslot=%d\n",
|
||||
SchedTbl,testSlot);)
|
||||
}
|
||||
TstSchedTbl = (u16 *)(SchedTbl + testSlot); // set table index
|
||||
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
|
||||
TstSchedTbl = (u16*)(SchedTbl + testSlot);
|
||||
IF_CBR(printk("Reading CBR Tbl from 0x%x, CbrVal=0x%x Iteration %d\n",
|
||||
(u32)TstSchedTbl,cbrVC,inc);)
|
||||
IF_CBR(printk("Reading CBR Tbl from 0x%p, CbrVal=0x%x Iteration %d\n",
|
||||
TstSchedTbl,cbrVC,inc);)
|
||||
memcpy((caddr_t)&cbrVC,(caddr_t)TstSchedTbl,sizeof(cbrVC));
|
||||
} /* while */
|
||||
// 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 */
|
||||
writel(iadev->rx_dle_dma & 0xfffff000,
|
||||
iadev->dma + IPHASE5575_RX_LIST_ADDR);
|
||||
IF_INIT(printk("Tx Dle list addr: 0x%08x value: 0x%0x\n",
|
||||
(u32)(iadev->dma+IPHASE5575_TX_LIST_ADDR),
|
||||
IF_INIT(printk("Tx Dle list addr: 0x%p value: 0x%0x\n",
|
||||
iadev->dma+IPHASE5575_TX_LIST_ADDR,
|
||||
*(u32*)(iadev->dma+IPHASE5575_TX_LIST_ADDR));
|
||||
printk("Rx Dle list addr: 0x%08x value: 0x%0x\n",
|
||||
(u32)(iadev->dma+IPHASE5575_RX_LIST_ADDR),
|
||||
printk("Rx Dle list addr: 0x%p value: 0x%0x\n",
|
||||
iadev->dma+IPHASE5575_RX_LIST_ADDR,
|
||||
*(u32*)(iadev->dma+IPHASE5575_RX_LIST_ADDR));)
|
||||
|
||||
writew(0xffff, iadev->reass_reg+REASS_MASK_REG);
|
||||
|
@ -1470,7 +1470,7 @@ static int rx_init(struct atm_dev *dev)
|
|||
buf_desc_ptr++;
|
||||
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;
|
||||
writew(i >> 16, iadev->reass_reg+REASS_QUEUE_BASE);
|
||||
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++;
|
||||
}
|
||||
IF_INIT(printk("freeq_start: 0x%0x\n", (u32)freeq_start);)
|
||||
IF_INIT(printk("freeq_start: 0x%p\n", freeq_start);)
|
||||
/* Packet Complete Queue */
|
||||
i = (PKT_COMP_Q * iadev->memSize) & 0xffff;
|
||||
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;
|
||||
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)
|
||||
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;
|
||||
tmp16 = (CBR_SCHED_TABLE*iadev->memSize + iadev->num_vc*6 - 2) >> 1;
|
||||
writew(tmp16, iadev->seg_reg+CBR_TAB_END);
|
||||
IF_INIT(printk("iadev->seg_reg = 0x%x CBR_PTR_BASE = 0x%x\n",
|
||||
(u32)iadev->seg_reg, readw(iadev->seg_reg+CBR_PTR_BASE));)
|
||||
IF_INIT(printk("iadev->seg_reg = 0x%p CBR_PTR_BASE = 0x%x\n",
|
||||
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",
|
||||
readw(iadev->seg_reg+CBR_TAB_BEG), readw(iadev->seg_reg+CBR_TAB_END),
|
||||
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 */
|
||||
trailer = iadev->tx_buf[desc-1].cpcs;
|
||||
IF_TX(printk("Sent: skb = 0x%x skb->data: 0x%x len: %d, desc: %d\n",
|
||||
(u32)skb, (u32)skb->data, skb->len, desc);)
|
||||
IF_TX(printk("Sent: skb = 0x%p skb->data: 0x%p len: %d, desc: %d\n",
|
||||
skb, skb->data, skb->len, desc);)
|
||||
trailer->control = 0;
|
||||
/*big endian*/
|
||||
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;
|
||||
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);)
|
||||
|
||||
pci_set_drvdata(pdev, dev);
|
||||
|
|
|
@ -134,6 +134,13 @@ static struct usb_device_id blacklist_ids[] = {
|
|||
|
||||
/* Dell laptop with Broadcom chip */
|
||||
{ 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 */
|
||||
{ USB_DEVICE(0x045e, 0x009c), .driver_info = HCI_RESET },
|
||||
|
|
|
@ -247,7 +247,6 @@ static inline void dump_bytes(enum debuglevel level, const char *tag,
|
|||
#ifdef CONFIG_GIGASET_DEBUG
|
||||
unsigned char c;
|
||||
static char dbgline[3 * 32 + 1];
|
||||
static const char hexdigit[] = "0123456789abcdef";
|
||||
int i = 0;
|
||||
while (count-- > 0) {
|
||||
if (i > sizeof(dbgline) - 4) {
|
||||
|
@ -258,8 +257,8 @@ static inline void dump_bytes(enum debuglevel level, const char *tag,
|
|||
c = *bytes++;
|
||||
dbgline[i] = (i && !(i % 12)) ? '-' : ' ';
|
||||
i++;
|
||||
dbgline[i++] = hexdigit[(c >> 4) & 0x0f];
|
||||
dbgline[i++] = hexdigit[c & 0x0f];
|
||||
dbgline[i++] = hex_asc_hi(c);
|
||||
dbgline[i++] = hex_asc_lo(c);
|
||||
}
|
||||
dbgline[i] = '\0';
|
||||
gig_dbg(level, "%s:%s", tag, dbgline);
|
||||
|
|
|
@ -60,7 +60,7 @@ typedef struct PofRecHdr_tag { /* Pof record header */
|
|||
|
||||
typedef struct PofTimeStamp_tag {
|
||||
/*00 */ unsigned long UnixTime __attribute__((packed));
|
||||
/*04 */ unsigned char DateTimeText[0x28] __attribute__((packed));
|
||||
/*04 */ unsigned char DateTimeText[0x28];
|
||||
/* =40 */
|
||||
/*2C */
|
||||
} tPofTimeStamp;
|
||||
|
|
|
@ -510,14 +510,14 @@ config STNIC
|
|||
config SH_ETH
|
||||
tristate "Renesas SuperH Ethernet support"
|
||||
depends on SUPERH && \
|
||||
(CPU_SUBTYPE_SH7710 || CPU_SUBTYPE_SH7712)
|
||||
(CPU_SUBTYPE_SH7710 || CPU_SUBTYPE_SH7712 || CPU_SUBTYPE_SH7763)
|
||||
select CRC32
|
||||
select MII
|
||||
select MDIO_BITBANG
|
||||
select PHYLIB
|
||||
help
|
||||
Renesas SuperH Ethernet device driver.
|
||||
This driver support SH7710 and SH7712.
|
||||
This driver support SH7710, SH7712 and SH7763.
|
||||
|
||||
config SUNLANCE
|
||||
tristate "Sun LANCE support"
|
||||
|
|
|
@ -605,36 +605,87 @@ adjust_head:
|
|||
static int bfin_mac_hard_start_xmit(struct sk_buff *skb,
|
||||
struct net_device *dev)
|
||||
{
|
||||
unsigned int data;
|
||||
u16 *data;
|
||||
|
||||
current_tx_ptr->skb = skb;
|
||||
|
||||
/*
|
||||
* Is skb->data always 16-bit aligned?
|
||||
* Do we need to memcpy((char *)(tail->packet + 2), skb->data, len)?
|
||||
*/
|
||||
if ((((unsigned int)(skb->data)) & 0x02) == 2) {
|
||||
/* move skb->data to current_tx_ptr payload */
|
||||
data = (unsigned int)(skb->data) - 2;
|
||||
*((unsigned short *)data) = (unsigned short)(skb->len);
|
||||
current_tx_ptr->desc_a.start_addr = (unsigned long)data;
|
||||
/* this is important! */
|
||||
blackfin_dcache_flush_range(data, (data + (skb->len)) + 2);
|
||||
|
||||
if (ANOMALY_05000285) {
|
||||
/*
|
||||
* TXDWA feature is not avaible to older revision < 0.3 silicon
|
||||
* of BF537
|
||||
*
|
||||
* Only if data buffer is ODD WORD alignment, we do not
|
||||
* need to memcpy
|
||||
*/
|
||||
u32 data_align = (u32)(skb->data) & 0x3;
|
||||
if (data_align == 0x2) {
|
||||
/* 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 {
|
||||
*((unsigned short *)(current_tx_ptr->packet)) =
|
||||
(unsigned short)(skb->len);
|
||||
memcpy((char *)(current_tx_ptr->packet + 2), skb->data,
|
||||
(skb->len));
|
||||
current_tx_ptr->desc_a.start_addr =
|
||||
(unsigned long)current_tx_ptr->packet;
|
||||
if (current_tx_ptr->status.status_word != 0)
|
||||
current_tx_ptr->status.status_word = 0;
|
||||
blackfin_dcache_flush_range((unsigned int)current_tx_ptr->
|
||||
packet,
|
||||
(unsigned int)(current_tx_ptr->
|
||||
packet + skb->len) +
|
||||
2);
|
||||
/*
|
||||
* TXDWA feature is avaible to revision < 0.3 silicon of
|
||||
* BF537 and always avaible to BF52x
|
||||
*/
|
||||
u32 data_align = (u32)(skb->data) & 0x3;
|
||||
if (data_align == 0x0) {
|
||||
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) - 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 */
|
||||
|
@ -691,7 +742,6 @@ static void bfin_mac_rx(struct net_device *dev)
|
|||
(unsigned long)skb->tail);
|
||||
|
||||
dev->last_rx = jiffies;
|
||||
skb->dev = dev;
|
||||
skb->protocol = eth_type_trans(skb, dev);
|
||||
#if defined(BFIN_MAC_CSUM_OFFLOAD)
|
||||
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_write(lp->phydev, MII_BMCR, BMCR_RESET);
|
||||
setup_system_regs(dev);
|
||||
setup_mac_addr(dev->dev_addr);
|
||||
bfin_mac_disable();
|
||||
bfin_mac_enable();
|
||||
pr_debug("hardware init finished\n");
|
||||
|
@ -955,7 +1006,7 @@ static int bfin_mac_close(struct net_device *dev)
|
|||
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 bfin_mac_local *lp;
|
||||
|
@ -1081,7 +1132,7 @@ out_err_probe_mac:
|
|||
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 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 = {
|
||||
.probe = bfin_mac_probe,
|
||||
.remove = bfin_mac_remove,
|
||||
.remove = __devexit_p(bfin_mac_remove),
|
||||
.resume = bfin_mac_resume,
|
||||
.suspend = bfin_mac_suspend,
|
||||
.driver = {
|
||||
|
|
|
@ -683,7 +683,7 @@ enum {
|
|||
SF_ERASE_SECTOR = 0xd8, /* erase sector */
|
||||
|
||||
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 */
|
||||
};
|
||||
|
||||
|
|
|
@ -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:
|
||||
mutex_unlock(&dlpar_mem_lock);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -1547,8 +1547,10 @@ static int __devinit enc28j60_probe(struct spi_device *spi)
|
|||
random_ether_addr(dev->dev_addr);
|
||||
enc28j60_set_hw_macaddr(dev);
|
||||
|
||||
ret = request_irq(spi->irq, enc28j60_irq, IRQF_TRIGGER_FALLING,
|
||||
DRV_NAME, priv);
|
||||
/* Board setup must set the relevant edge trigger type;
|
||||
* level triggers won't currently work.
|
||||
*/
|
||||
ret = request_irq(spi->irq, enc28j60_irq, 0, DRV_NAME, priv);
|
||||
if (ret < 0) {
|
||||
if (netif_msg_probe(priv))
|
||||
dev_err(&spi->dev, DRV_NAME ": request irq %d failed "
|
||||
|
|
|
@ -333,6 +333,7 @@ enum {
|
|||
NvRegPowerState2 = 0x600,
|
||||
#define NVREG_POWERSTATE2_POWERUP_MASK 0x0F11
|
||||
#define NVREG_POWERSTATE2_POWERUP_REV_A3 0x0001
|
||||
#define NVREG_POWERSTATE2_PHY_RESET 0x0004
|
||||
};
|
||||
|
||||
/* Big endian: should work, but is untested */
|
||||
|
@ -529,6 +530,7 @@ union ring_type {
|
|||
#define PHY_REALTEK_INIT_REG4 0x14
|
||||
#define PHY_REALTEK_INIT_REG5 0x18
|
||||
#define PHY_REALTEK_INIT_REG6 0x11
|
||||
#define PHY_REALTEK_INIT_REG7 0x01
|
||||
#define PHY_REALTEK_INIT1 0x0000
|
||||
#define PHY_REALTEK_INIT2 0x8e00
|
||||
#define PHY_REALTEK_INIT3 0x0001
|
||||
|
@ -537,6 +539,9 @@ union ring_type {
|
|||
#define PHY_REALTEK_INIT6 0xf5c7
|
||||
#define PHY_REALTEK_INIT7 0x1000
|
||||
#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_GIGABIT 0x0100
|
||||
|
@ -1149,6 +1154,42 @@ static int phy_init(struct net_device *dev)
|
|||
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->device_id == PCI_DEVICE_ID_NVIDIA_NVENET_32 ||
|
||||
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 |= BMCR_ANENABLE;
|
||||
|
||||
/* 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;
|
||||
if (np->phy_oui == PHY_OUI_REALTEK &&
|
||||
np->phy_model == PHY_MODEL_REALTEK_8211 &&
|
||||
np->phy_rev == PHY_REV_REALTEK_8211C) {
|
||||
/* start autoneg since we already performed hw reset above */
|
||||
mii_control |= BMCR_ANRESTART;
|
||||
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 */
|
||||
|
|
|
@ -69,18 +69,20 @@ static void ri_tasklet(unsigned long dev)
|
|||
struct net_device *_dev = (struct net_device *)dev;
|
||||
struct ifb_private *dp = netdev_priv(_dev);
|
||||
struct net_device_stats *stats = &_dev->stats;
|
||||
struct netdev_queue *txq;
|
||||
struct sk_buff *skb;
|
||||
|
||||
txq = netdev_get_tx_queue(_dev, 0);
|
||||
dp->st_task_enter++;
|
||||
if ((skb = skb_peek(&dp->tq)) == NULL) {
|
||||
dp->st_txq_refl_try++;
|
||||
if (netif_tx_trylock(_dev)) {
|
||||
if (__netif_tx_trylock(txq)) {
|
||||
dp->st_rxq_enter++;
|
||||
while ((skb = skb_dequeue(&dp->rq)) != NULL) {
|
||||
skb_queue_tail(&dp->tq, skb);
|
||||
dp->st_rx2tx_tran++;
|
||||
}
|
||||
netif_tx_unlock(_dev);
|
||||
__netif_tx_unlock(txq);
|
||||
} else {
|
||||
/* reschedule */
|
||||
dp->st_rxq_notenter++;
|
||||
|
@ -115,7 +117,7 @@ static void ri_tasklet(unsigned long dev)
|
|||
BUG();
|
||||
}
|
||||
|
||||
if (netif_tx_trylock(_dev)) {
|
||||
if (__netif_tx_trylock(txq)) {
|
||||
dp->st_rxq_check++;
|
||||
if ((skb = skb_peek(&dp->rq)) == NULL) {
|
||||
dp->tasklet_pending = 0;
|
||||
|
@ -123,10 +125,10 @@ static void ri_tasklet(unsigned long dev)
|
|||
netif_wake_queue(_dev);
|
||||
} else {
|
||||
dp->st_rxq_rsch++;
|
||||
netif_tx_unlock(_dev);
|
||||
__netif_tx_unlock(txq);
|
||||
goto resched;
|
||||
}
|
||||
netif_tx_unlock(_dev);
|
||||
__netif_tx_unlock(txq);
|
||||
} else {
|
||||
resched:
|
||||
dp->tasklet_pending = 1;
|
||||
|
|
|
@ -107,7 +107,7 @@ static int act200l_open(struct sir_dev *dev)
|
|||
{
|
||||
struct qos_info *qos = &dev->qos;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s()\n", __func__ );
|
||||
|
||||
/* Power on the dongle */
|
||||
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)
|
||||
{
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s()\n", __func__ );
|
||||
|
||||
/* Power off the dongle */
|
||||
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];
|
||||
int ret = 0;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s()\n", __func__ );
|
||||
|
||||
/* Clear DTR and set RTS to enter command mode */
|
||||
sirdev_set_dtr_rts(dev, FALSE, TRUE);
|
||||
|
@ -212,7 +212,7 @@ static int act200l_reset(struct sir_dev *dev)
|
|||
};
|
||||
int ret = 0;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s()\n", __func__ );
|
||||
|
||||
switch (state) {
|
||||
case SIRDEV_STATE_DONGLE_RESET:
|
||||
|
@ -240,7 +240,7 @@ static int act200l_reset(struct sir_dev *dev)
|
|||
dev->speed = 9600;
|
||||
break;
|
||||
default:
|
||||
IRDA_ERROR("%s(), unknown state %d\n", __FUNCTION__, state);
|
||||
IRDA_ERROR("%s(), unknown state %d\n", __func__, state);
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -165,7 +165,7 @@ static int actisys_change_speed(struct sir_dev *dev, unsigned speed)
|
|||
int ret = 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);
|
||||
|
||||
/* dongle was already resetted from irda_request state machine,
|
||||
|
|
|
@ -152,7 +152,7 @@ static int __init ali_ircc_init(void)
|
|||
int reg, revision;
|
||||
int i = 0;
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
|
||||
|
||||
ret = platform_driver_register(&ali_ircc_driver);
|
||||
if (ret) {
|
||||
|
@ -166,7 +166,7 @@ static int __init ali_ircc_init(void)
|
|||
/* Probe for all the ALi chipsets we know about */
|
||||
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 */
|
||||
for (cfg=0; cfg<2; cfg++)
|
||||
|
@ -196,11 +196,11 @@ static int __init ali_ircc_init(void)
|
|||
|
||||
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);
|
||||
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);
|
||||
|
||||
/*
|
||||
|
@ -223,14 +223,14 @@ static int __init ali_ircc_init(void)
|
|||
}
|
||||
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 */
|
||||
outb(0xbb, cfg_base);
|
||||
}
|
||||
}
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __func__);
|
||||
|
||||
if (ret)
|
||||
platform_driver_unregister(&ali_ircc_driver);
|
||||
|
@ -248,7 +248,7 @@ static void __exit ali_ircc_cleanup(void)
|
|||
{
|
||||
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++) {
|
||||
if (dev_self[i])
|
||||
|
@ -257,7 +257,7 @@ static void __exit ali_ircc_cleanup(void)
|
|||
|
||||
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 err;
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
|
||||
|
||||
if (i >= ARRAY_SIZE(dev_self)) {
|
||||
IRDA_ERROR("%s(), maximum number of supported chips reached!\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
|
@ -288,7 +288,7 @@ static int ali_ircc_open(int i, chipio_t *info)
|
|||
dev = alloc_irdadev(sizeof(*self));
|
||||
if (dev == NULL) {
|
||||
IRDA_ERROR("%s(), can't allocate memory for control block!\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
|
@ -312,7 +312,7 @@ static int ali_ircc_open(int i, chipio_t *info)
|
|||
/* Reserve the ioports that we need */
|
||||
if (!request_region(self->io.fir_base, self->io.fir_ext,
|
||||
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);
|
||||
err = -ENODEV;
|
||||
goto err_out1;
|
||||
|
@ -370,19 +370,19 @@ static int ali_ircc_open(int i, chipio_t *info)
|
|||
|
||||
err = register_netdev(dev);
|
||||
if (err) {
|
||||
IRDA_ERROR("%s(), register_netdev() failed!\n", __FUNCTION__);
|
||||
IRDA_ERROR("%s(), register_netdev() failed!\n", __func__);
|
||||
goto err_out4;
|
||||
}
|
||||
IRDA_MESSAGE("IrDA: Registered device %s\n", dev->name);
|
||||
|
||||
/* Check dongle id */
|
||||
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]);
|
||||
|
||||
self->io.dongle_id = dongle_id;
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __func__);
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -411,7 +411,7 @@ static int __exit ali_ircc_close(struct ali_ircc_cb *self)
|
|||
{
|
||||
int iobase;
|
||||
|
||||
IRDA_DEBUG(4, "%s(), ---------------- Start ----------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(4, "%s(), ---------------- Start ----------------\n", __func__);
|
||||
|
||||
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);
|
||||
|
||||
/* 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);
|
||||
|
||||
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;
|
||||
free_netdev(self->netdev);
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __func__);
|
||||
|
||||
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 hi, low, reg;
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
|
||||
|
||||
/* Enter Configuration */
|
||||
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;
|
||||
|
||||
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 */
|
||||
outb(0x70, cfg_base);
|
||||
reg = inb(cfg_base+1);
|
||||
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 */
|
||||
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;
|
||||
|
||||
if(info->dma == 0x04)
|
||||
IRDA_WARNING("%s(), No DMA channel assigned !\n", __FUNCTION__);
|
||||
IRDA_WARNING("%s(), No DMA channel assigned !\n", __func__);
|
||||
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 */
|
||||
outb(0x30, cfg_base);
|
||||
reg = inb(cfg_base+1);
|
||||
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 */
|
||||
outb(0x22, cfg_base);
|
||||
reg = inb(cfg_base+1);
|
||||
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 */
|
||||
outb(0xbb, cfg_base);
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End -----------------\n", __func__);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -548,7 +548,7 @@ static int ali_ircc_setup(chipio_t *info)
|
|||
int version;
|
||||
int iobase = info->fir_base;
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
|
||||
|
||||
/* Locking comments :
|
||||
* 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
|
||||
// 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;
|
||||
}
|
||||
|
@ -626,7 +626,7 @@ static int ali_ircc_read_dongle_id (int i, chipio_t *info)
|
|||
int dongle_id, reg;
|
||||
int cfg_base = info->cfg_base;
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
|
||||
|
||||
/* Enter Configuration */
|
||||
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);
|
||||
reg = inb(cfg_base+1);
|
||||
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]);
|
||||
|
||||
/* Exit configuration */
|
||||
outb(0xbb, cfg_base);
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__);
|
||||
|
||||
return dongle_id;
|
||||
}
|
||||
|
@ -663,7 +663,7 @@ static irqreturn_t ali_ircc_interrupt(int irq, void *dev_id)
|
|||
struct ali_ircc_cb *self;
|
||||
int ret;
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
|
||||
|
||||
self = dev->priv;
|
||||
|
||||
|
@ -677,7 +677,7 @@ static irqreturn_t ali_ircc_interrupt(int irq, void *dev_id)
|
|||
|
||||
spin_unlock(&self->lock);
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__);
|
||||
return ret;
|
||||
}
|
||||
/*
|
||||
|
@ -691,7 +691,7 @@ static irqreturn_t ali_ircc_fir_interrupt(struct ali_ircc_cb *self)
|
|||
__u8 eir, OldMessageCount;
|
||||
int iobase, tmp;
|
||||
|
||||
IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __func__);
|
||||
|
||||
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
|
||||
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->LineStatus = %x\n", __FUNCTION__,self->LineStatus);
|
||||
IRDA_DEBUG(1, "%s(), self->ier = %x\n", __FUNCTION__,self->ier);
|
||||
IRDA_DEBUG(1, "%s(), eir = %x\n", __FUNCTION__,eir);
|
||||
IRDA_DEBUG(1, "%s(), self->InterruptID = %x\n", __func__,self->InterruptID);
|
||||
IRDA_DEBUG(1, "%s(), self->LineStatus = %x\n", __func__,self->LineStatus);
|
||||
IRDA_DEBUG(1, "%s(), self->ier = %x\n", __func__,self->ier);
|
||||
IRDA_DEBUG(1, "%s(), eir = %x\n", __func__,eir);
|
||||
|
||||
/* Disable interrupts */
|
||||
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 */
|
||||
{
|
||||
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))
|
||||
{
|
||||
|
@ -737,23 +737,23 @@ static irqreturn_t ali_ircc_fir_interrupt(struct ali_ircc_cb *self)
|
|||
}
|
||||
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))
|
||||
{
|
||||
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))
|
||||
{
|
||||
IRDA_DEBUG(1, "%s(), ******* receive complete ******** \n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s(), ******* receive complete ******** \n", __func__);
|
||||
|
||||
self->ier = IER_EOM;
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
@ -766,7 +766,7 @@ static irqreturn_t ali_ircc_fir_interrupt(struct ali_ircc_cb *self)
|
|||
if(OldMessageCount > ((self->LineStatus+1) & 0x07))
|
||||
{
|
||||
self->rcvFramesOverflow = TRUE;
|
||||
IRDA_DEBUG(1, "%s(), ******* self->rcvFramesOverflow = TRUE ******* \n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s(), ******* self->rcvFramesOverflow = TRUE ******* \n", __func__);
|
||||
}
|
||||
/* Disable Timer */
|
||||
switch_bank(iobase, BANK1);
|
||||
|
@ -798,7 +798,7 @@ static irqreturn_t ali_ircc_fir_interrupt(struct ali_ircc_cb *self)
|
|||
/* Restore Interrupt */
|
||||
SetCOMInterrupts(self, TRUE);
|
||||
|
||||
IRDA_DEBUG(1, "%s(), ----------------- End ---------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s(), ----------------- End ---------------\n", __func__);
|
||||
return IRQ_RETVAL(eir);
|
||||
}
|
||||
|
||||
|
@ -813,7 +813,7 @@ static irqreturn_t ali_ircc_sir_interrupt(struct ali_ircc_cb *self)
|
|||
int iobase;
|
||||
int iir, lsr;
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
|
||||
|
||||
iobase = self->io.sir_base;
|
||||
|
||||
|
@ -822,13 +822,13 @@ static irqreturn_t ali_ircc_sir_interrupt(struct ali_ircc_cb *self)
|
|||
/* Clear interrupt */
|
||||
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);
|
||||
|
||||
switch (iir)
|
||||
{
|
||||
case UART_IIR_RLSI:
|
||||
IRDA_DEBUG(2, "%s(), RLSI\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), RLSI\n", __func__);
|
||||
break;
|
||||
case UART_IIR_RDI:
|
||||
/* Receive interrupt */
|
||||
|
@ -842,14 +842,14 @@ static irqreturn_t ali_ircc_sir_interrupt(struct ali_ircc_cb *self)
|
|||
}
|
||||
break;
|
||||
default:
|
||||
IRDA_DEBUG(0, "%s(), unhandled IIR=%#x\n", __FUNCTION__, iir);
|
||||
IRDA_DEBUG(0, "%s(), unhandled IIR=%#x\n", __func__, iir);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__);
|
||||
|
||||
return IRQ_RETVAL(iir);
|
||||
}
|
||||
|
@ -866,7 +866,7 @@ static void ali_ircc_sir_receive(struct ali_ircc_cb *self)
|
|||
int boguscount = 0;
|
||||
int iobase;
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__);
|
||||
IRDA_ASSERT(self != NULL, return;);
|
||||
|
||||
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 */
|
||||
if (boguscount++ > 32) {
|
||||
IRDA_DEBUG(2,"%s(), breaking!\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2,"%s(), breaking!\n", __func__);
|
||||
break;
|
||||
}
|
||||
} 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_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__ );
|
||||
|
||||
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 */
|
||||
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);
|
||||
self->new_speed = 0;
|
||||
|
||||
// benjamin 2000/11/10 06:32PM
|
||||
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;
|
||||
// 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);
|
||||
}
|
||||
|
||||
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)
|
||||
|
@ -957,9 +957,9 @@ static void ali_ircc_change_speed(struct ali_ircc_cb *self, __u32 baud)
|
|||
struct net_device *dev = self->netdev;
|
||||
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.
|
||||
* - Jean II */
|
||||
|
@ -998,7 +998,7 @@ static void ali_ircc_change_speed(struct ali_ircc_cb *self, __u32 baud)
|
|||
|
||||
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)
|
||||
|
@ -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 net_device *dev;
|
||||
|
||||
IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(1, "%s(), ---------------- Start ----------------\n", __func__ );
|
||||
|
||||
IRDA_ASSERT(self != NULL, return;);
|
||||
|
||||
dev = self->netdev;
|
||||
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 */
|
||||
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
|
||||
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 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;);
|
||||
|
||||
|
@ -1103,7 +1103,7 @@ static void ali_ircc_sir_change_speed(struct ali_ircc_cb *priv, __u32 speed)
|
|||
|
||||
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)
|
||||
|
@ -1113,14 +1113,14 @@ static void ali_ircc_change_dongle_speed(struct ali_ircc_cb *priv, int speed)
|
|||
int iobase,dongle_id;
|
||||
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; */
|
||||
dongle_id = self->io.dongle_id;
|
||||
|
||||
/* 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);
|
||||
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);
|
||||
|
||||
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;
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__ );
|
||||
|
||||
/* Tx FIFO should be empty! */
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -1313,7 +1313,7 @@ static int ali_ircc_sir_write(int iobase, int fifo_size, __u8 *buf, int len)
|
|||
actual++;
|
||||
}
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
|
||||
return actual;
|
||||
}
|
||||
|
||||
|
@ -1329,7 +1329,7 @@ static int ali_ircc_net_open(struct net_device *dev)
|
|||
int iobase;
|
||||
char hwname[32];
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__ );
|
||||
|
||||
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);
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1392,7 +1392,7 @@ static int ali_ircc_net_close(struct net_device *dev)
|
|||
struct ali_ircc_cb *self;
|
||||
//int iobase;
|
||||
|
||||
IRDA_DEBUG(4, "%s(), ---------------- Start ----------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(4, "%s(), ---------------- Start ----------------\n", __func__ );
|
||||
|
||||
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_dma(self->io.dma);
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1434,7 +1434,7 @@ static int ali_ircc_fir_hard_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||
__u32 speed;
|
||||
int mtt, diff;
|
||||
|
||||
IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __func__ );
|
||||
|
||||
self = (struct ali_ircc_cb *) dev->priv;
|
||||
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;
|
||||
/* 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)
|
||||
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 */
|
||||
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 */
|
||||
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);
|
||||
dev_kfree_skb(skb);
|
||||
|
||||
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __func__ );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1578,7 +1578,7 @@ static void ali_ircc_dma_xmit(struct ali_ircc_cb *self)
|
|||
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;
|
||||
|
||||
|
@ -1629,7 +1629,7 @@ static void ali_ircc_dma_xmit(struct ali_ircc_cb *self)
|
|||
tmp = inb(iobase+FIR_LCR_B);
|
||||
tmp &= ~0x20; // Disable SIP
|
||||
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);
|
||||
|
||||
|
@ -1639,7 +1639,7 @@ static void ali_ircc_dma_xmit(struct ali_ircc_cb *self)
|
|||
|
||||
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)
|
||||
|
@ -1647,7 +1647,7 @@ static int ali_ircc_dma_xmit_complete(struct ali_ircc_cb *self)
|
|||
int iobase;
|
||||
int ret = TRUE;
|
||||
|
||||
IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __func__ );
|
||||
|
||||
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)
|
||||
|
||||
{
|
||||
IRDA_ERROR("%s(), ********* LSR_FRAME_ABORT *********\n", __FUNCTION__);
|
||||
IRDA_ERROR("%s(), ********* LSR_FRAME_ABORT *********\n", __func__);
|
||||
self->stats.tx_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);
|
||||
|
||||
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __func__ );
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1718,7 +1718,7 @@ static int ali_ircc_dma_receive(struct ali_ircc_cb *self)
|
|||
{
|
||||
int iobase, tmp;
|
||||
|
||||
IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __func__ );
|
||||
|
||||
iobase = self->io.fir_base;
|
||||
|
||||
|
@ -1756,7 +1756,7 @@ static int ali_ircc_dma_receive(struct ali_ircc_cb *self)
|
|||
//switch_bank(iobase, BANK0);
|
||||
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
|
||||
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 */
|
||||
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);
|
||||
|
||||
switch_bank(iobase, BANK0);
|
||||
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __func__ );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1779,7 +1779,7 @@ static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self)
|
|||
__u8 status, MessageCount;
|
||||
int len, i, iobase, val;
|
||||
|
||||
IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(1, "%s(), ---------------- Start -----------------\n", __func__ );
|
||||
|
||||
st_fifo = &self->st_fifo;
|
||||
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;
|
||||
|
||||
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++)
|
||||
{
|
||||
|
@ -1801,11 +1801,11 @@ static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self)
|
|||
len = len << 8;
|
||||
len |= inb(iobase+FIR_RX_DSR_LO);
|
||||
|
||||
IRDA_DEBUG(1, "%s(), RX Length = 0x%.2x,\n", __FUNCTION__ , len);
|
||||
IRDA_DEBUG(1, "%s(), RX Status = 0x%.2x,\n", __FUNCTION__ , status);
|
||||
IRDA_DEBUG(1, "%s(), RX Length = 0x%.2x,\n", __func__ , len);
|
||||
IRDA_DEBUG(1, "%s(), RX Status = 0x%.2x,\n", __func__ , status);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -1828,7 +1828,7 @@ static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self)
|
|||
/* Check for errors */
|
||||
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 */
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
self->stats.rx_crc_errors++;
|
||||
IRDA_DEBUG(0,"%s(), ************* CRC Errors ************ \n", __FUNCTION__ );
|
||||
IRDA_DEBUG(0,"%s(), ************* CRC Errors ************ \n", __func__ );
|
||||
}
|
||||
|
||||
if(self->rcvFramesOverflow)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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
|
||||
|
@ -1872,7 +1872,7 @@ static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self)
|
|||
val = inb(iobase+FIR_BSR);
|
||||
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 */
|
||||
st_fifo->head--;
|
||||
|
@ -1909,7 +1909,7 @@ static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self)
|
|||
{
|
||||
IRDA_WARNING("%s(), memory squeeze, "
|
||||
"dropping frame.\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
self->stats.rx_dropped++;
|
||||
|
||||
return FALSE;
|
||||
|
@ -1937,7 +1937,7 @@ static int ali_ircc_dma_receive_complete(struct ali_ircc_cb *self)
|
|||
|
||||
switch_bank(iobase, BANK0);
|
||||
|
||||
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(1, "%s(), ----------------- End ------------------\n", __func__ );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -1956,7 +1956,7 @@ static int ali_ircc_sir_hard_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||
int iobase;
|
||||
__u32 speed;
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__ );
|
||||
|
||||
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);
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -2024,7 +2024,7 @@ static int ali_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
|
|||
unsigned long flags;
|
||||
int ret = 0;
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start ----------------\n", __func__ );
|
||||
|
||||
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_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) {
|
||||
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
|
||||
* 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);
|
||||
break;
|
||||
case SIOCSMEDIABUSY: /* Set media busy */
|
||||
IRDA_DEBUG(1, "%s(), SIOCSMEDIABUSY\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(1, "%s(), SIOCSMEDIABUSY\n", __func__ );
|
||||
if (!capable(CAP_NET_ADMIN))
|
||||
return -EPERM;
|
||||
irda_device_set_media_busy(self->netdev, TRUE);
|
||||
break;
|
||||
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 */
|
||||
irq->ifr_receiving = ali_ircc_is_receiving(self);
|
||||
break;
|
||||
|
@ -2064,7 +2064,7 @@ static int ali_ircc_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
|
|||
ret = -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -2081,7 +2081,7 @@ static int ali_ircc_is_receiving(struct ali_ircc_cb *self)
|
|||
int status = FALSE;
|
||||
int iobase;
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start -----------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s(), ---------------- Start -----------------\n", __func__ );
|
||||
|
||||
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)
|
||||
{
|
||||
/* 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;
|
||||
}
|
||||
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);
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
}
|
||||
|
@ -2164,7 +2164,7 @@ static void SetCOMInterrupts(struct ali_ircc_cb *self , unsigned char enable)
|
|||
|
||||
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 */
|
||||
if (enable){
|
||||
|
@ -2205,14 +2205,14 @@ static void SetCOMInterrupts(struct ali_ircc_cb *self , unsigned char enable)
|
|||
else
|
||||
outb(newMask, iobase+UART_IER);
|
||||
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(2, "%s(), ----------------- End ------------------\n", __func__ );
|
||||
}
|
||||
|
||||
static void SIR2FIR(int iobase)
|
||||
{
|
||||
//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.
|
||||
* Jean II */
|
||||
|
@ -2228,14 +2228,14 @@ static void SIR2FIR(int iobase)
|
|||
//tmp |= 0x20;
|
||||
//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)
|
||||
{
|
||||
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.
|
||||
* Jean II */
|
||||
|
@ -2251,7 +2251,7 @@ static void FIR2SIR(int iobase)
|
|||
val = inb(iobase+UART_LSR);
|
||||
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>");
|
||||
|
|
|
@ -245,7 +245,7 @@ toshoboe_dumpregs (struct toshoboe_cb *self)
|
|||
{
|
||||
__u32 ringbase;
|
||||
|
||||
IRDA_DEBUG (4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG (4, "%s()\n", __func__);
|
||||
|
||||
ringbase = INB (OBOE_RING_BASE0) << 10;
|
||||
ringbase |= INB (OBOE_RING_BASE1) << 18;
|
||||
|
@ -293,7 +293,7 @@ static void
|
|||
toshoboe_disablebm (struct toshoboe_cb *self)
|
||||
{
|
||||
__u8 command;
|
||||
IRDA_DEBUG (4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG (4, "%s()\n", __func__);
|
||||
|
||||
pci_read_config_byte (self->pdev, PCI_COMMAND, &command);
|
||||
command &= ~PCI_COMMAND_MASTER;
|
||||
|
@ -305,7 +305,7 @@ toshoboe_disablebm (struct toshoboe_cb *self)
|
|||
static void
|
||||
toshoboe_stopchip (struct toshoboe_cb *self)
|
||||
{
|
||||
IRDA_DEBUG (4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG (4, "%s()\n", __func__);
|
||||
|
||||
/*Disable interrupts */
|
||||
OUTB (0x0, OBOE_IER);
|
||||
|
@ -350,7 +350,7 @@ toshoboe_setbaud (struct toshoboe_cb *self)
|
|||
__u16 pconfig = 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)
|
||||
{
|
||||
|
@ -482,7 +482,7 @@ toshoboe_setbaud (struct toshoboe_cb *self)
|
|||
static void
|
||||
toshoboe_enablebm (struct toshoboe_cb *self)
|
||||
{
|
||||
IRDA_DEBUG (4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG (4, "%s()\n", __func__);
|
||||
pci_set_master (self->pdev);
|
||||
}
|
||||
|
||||
|
@ -492,7 +492,7 @@ toshoboe_initring (struct toshoboe_cb *self)
|
|||
{
|
||||
int i;
|
||||
|
||||
IRDA_DEBUG (4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG (4, "%s()\n", __func__);
|
||||
|
||||
for (i = 0; i < TX_SLOTS; ++i)
|
||||
{
|
||||
|
@ -550,7 +550,7 @@ toshoboe_startchip (struct toshoboe_cb *self)
|
|||
{
|
||||
__u32 physaddr;
|
||||
|
||||
IRDA_DEBUG (4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG (4, "%s()\n", __func__);
|
||||
|
||||
toshoboe_initring (self);
|
||||
toshoboe_enablebm (self);
|
||||
|
@ -824,7 +824,7 @@ toshoboe_probe (struct toshoboe_cb *self)
|
|||
#endif
|
||||
unsigned long flags;
|
||||
|
||||
IRDA_DEBUG (4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG (4, "%s()\n", __func__);
|
||||
|
||||
if (request_irq (self->io.irq, toshoboe_probeinterrupt,
|
||||
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_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));
|
||||
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
|
||||
_dumpbufs(skb->data,skb->len,'>');
|
||||
#endif
|
||||
|
@ -1015,7 +1015,7 @@ toshoboe_hard_xmit (struct sk_buff *skb, struct net_device *dev)
|
|||
{
|
||||
self->new_speed = speed;
|
||||
IRDA_DEBUG (1, "%s: Queued TxDone scheduled speed change %d\n" ,
|
||||
__FUNCTION__, speed);
|
||||
__func__, speed);
|
||||
/* if no data, that's all! */
|
||||
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 */
|
||||
|
||||
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);
|
||||
if (mtt)
|
||||
{
|
||||
|
@ -1101,7 +1101,7 @@ dumpbufs(skb->data,skb->len,'>');
|
|||
|
||||
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);
|
||||
toshoboe_start_DMA(self, OBOE_CONFIG0H_ENTX);
|
||||
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)
|
||||
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);
|
||||
|
||||
txp = INB (OBOE_TXSLOT) & OBOE_SLOT_MASK;
|
||||
|
@ -1209,7 +1209,7 @@ toshoboe_interrupt (int irq, void *dev_id)
|
|||
{
|
||||
self->speed = self->new_speed;
|
||||
IRDA_DEBUG (1, "%s: Executed TxDone scheduled speed change %d\n",
|
||||
__FUNCTION__, self->speed);
|
||||
__func__, self->speed);
|
||||
toshoboe_setbaud (self);
|
||||
}
|
||||
|
||||
|
@ -1224,7 +1224,7 @@ toshoboe_interrupt (int irq, void *dev_id)
|
|||
{
|
||||
int len = self->ring->rx[self->rxs].len;
|
||||
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);
|
||||
|
||||
#ifdef DUMP_PACKETS
|
||||
|
@ -1246,7 +1246,7 @@ dumpbufs(self->rx_bufs[self->rxs],len,'<');
|
|||
len -= 2;
|
||||
else
|
||||
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
|
||||
|
@ -1256,7 +1256,7 @@ dumpbufs(self->rx_bufs[self->rxs],len,'<');
|
|||
len -= 2;
|
||||
else
|
||||
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
|
||||
else if (enable & OBOE_ENABLEH_FIRON)
|
||||
|
@ -1265,10 +1265,10 @@ dumpbufs(self->rx_bufs[self->rxs],len,'<');
|
|||
len -= 4; /*FIXME: check this */
|
||||
else
|
||||
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
|
||||
IRDA_DEBUG (0, "%s.?IR:%x(%x)\n", __FUNCTION__, len,enable);
|
||||
IRDA_DEBUG (0, "%s.?IR:%x(%x)\n", __func__, len,enable);
|
||||
|
||||
if (len)
|
||||
{
|
||||
|
@ -1289,7 +1289,7 @@ dumpbufs(self->rx_bufs[self->rxs],len,'<');
|
|||
{
|
||||
printk (KERN_INFO
|
||||
"%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. */
|
||||
/* we have to join all the received buffers received */
|
||||
/*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);
|
||||
}
|
||||
|
||||
|
@ -1329,7 +1329,7 @@ dumpbufs(self->rx_bufs[self->rxs],len,'<');
|
|||
if (irqstat & OBOE_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);
|
||||
}
|
||||
return IRQ_HANDLED;
|
||||
|
@ -1343,7 +1343,7 @@ toshoboe_net_open (struct net_device *dev)
|
|||
unsigned long flags;
|
||||
int rc;
|
||||
|
||||
IRDA_DEBUG (4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG (4, "%s()\n", __func__);
|
||||
|
||||
self = netdev_priv(dev);
|
||||
|
||||
|
@ -1381,7 +1381,7 @@ toshoboe_net_close (struct net_device *dev)
|
|||
{
|
||||
struct toshoboe_cb *self;
|
||||
|
||||
IRDA_DEBUG (4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG (4, "%s()\n", __func__);
|
||||
|
||||
IRDA_ASSERT (dev != NULL, return -1; );
|
||||
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_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 */
|
||||
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
|
||||
* 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 );
|
||||
if (!in_interrupt () && !capable (CAP_NET_ADMIN)) {
|
||||
ret = -EPERM;
|
||||
|
@ -1451,7 +1451,7 @@ toshoboe_net_ioctl (struct net_device *dev, struct ifreq *rq, int cmd)
|
|||
self->new_speed = irq->ifr_baudrate;
|
||||
break;
|
||||
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) );
|
||||
if (!capable (CAP_NET_ADMIN)) {
|
||||
ret = -EPERM;
|
||||
|
@ -1461,11 +1461,11 @@ toshoboe_net_ioctl (struct net_device *dev, struct ifreq *rq, int cmd)
|
|||
break;
|
||||
case SIOCGRECEIVING: /* Check if we are receiving right now */
|
||||
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 );
|
||||
break;
|
||||
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;
|
||||
}
|
||||
out:
|
||||
|
@ -1492,7 +1492,7 @@ toshoboe_close (struct pci_dev *pci_dev)
|
|||
int i;
|
||||
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; );
|
||||
|
||||
|
@ -1533,7 +1533,7 @@ toshoboe_open (struct pci_dev *pci_dev, const struct pci_device_id *pdid)
|
|||
int ok = 0;
|
||||
int err;
|
||||
|
||||
IRDA_DEBUG (4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG (4, "%s()\n", __func__);
|
||||
|
||||
if ((err=pci_enable_device(pci_dev)))
|
||||
return err;
|
||||
|
@ -1700,7 +1700,7 @@ toshoboe_gotosleep (struct pci_dev *pci_dev, pm_message_t crap)
|
|||
unsigned long flags;
|
||||
int i = 10;
|
||||
|
||||
IRDA_DEBUG (4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG (4, "%s()\n", __func__);
|
||||
|
||||
if (!self || self->stopped)
|
||||
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);
|
||||
unsigned long flags;
|
||||
|
||||
IRDA_DEBUG (4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG (4, "%s()\n", __func__);
|
||||
|
||||
if (!self || !self->stopped)
|
||||
return 0;
|
||||
|
|
|
@ -86,7 +86,7 @@ static int girbil_open(struct sir_dev *dev)
|
|||
{
|
||||
struct qos_info *qos = &dev->qos;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
/* Power on dongle */
|
||||
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)
|
||||
{
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
/* Power off dongle */
|
||||
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];
|
||||
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 */
|
||||
|
||||
|
@ -179,7 +179,7 @@ static int girbil_change_speed(struct sir_dev *dev, unsigned speed)
|
|||
break;
|
||||
|
||||
default:
|
||||
IRDA_ERROR("%s - undefined state %d\n", __FUNCTION__, state);
|
||||
IRDA_ERROR("%s - undefined state %d\n", __func__, state);
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
@ -209,7 +209,7 @@ static int girbil_reset(struct sir_dev *dev)
|
|||
u8 control = GIRBIL_TXEN | GIRBIL_RXEN;
|
||||
int ret = 0;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
switch (state) {
|
||||
case SIRDEV_STATE_DONGLE_RESET:
|
||||
|
@ -241,7 +241,7 @@ static int girbil_reset(struct sir_dev *dev)
|
|||
break;
|
||||
|
||||
default:
|
||||
IRDA_ERROR("%s(), undefined state %d\n", __FUNCTION__, state);
|
||||
IRDA_ERROR("%s(), undefined state %d\n", __func__, state);
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -177,12 +177,12 @@ static void irda_usb_build_header(struct irda_usb_cb *self,
|
|||
(!force) && (self->speed != -1)) {
|
||||
/* No speed and xbofs change here
|
||||
* (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;
|
||||
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;
|
||||
/* We will do ` self->new_speed = -1; ' in the completion
|
||||
* 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 */
|
||||
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;
|
||||
/* We will do ` self->new_xbofs = -1; ' in the completion
|
||||
* 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;
|
||||
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);
|
||||
|
||||
/* Grab the speed URB */
|
||||
urb = self->speed_urb;
|
||||
if (urb->status != 0) {
|
||||
IRDA_WARNING("%s(), URB still in use!\n", __FUNCTION__);
|
||||
IRDA_WARNING("%s(), URB still in use!\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -334,7 +334,7 @@ static void irda_usb_change_speed_xbofs(struct irda_usb_cb *self)
|
|||
|
||||
/* Irq disabled -> 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;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
/* We should always have a context */
|
||||
IRDA_ASSERT(self != NULL, return;);
|
||||
|
@ -357,7 +357,7 @@ static void speed_bulk_callback(struct urb *urb)
|
|||
/* Check for timeout and other USB nasties */
|
||||
if (urb->status != 0) {
|
||||
/* 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.
|
||||
* 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 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);
|
||||
|
||||
|
@ -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
|
||||
* of irda_usb_disconnect() is synchronous - Jean II */
|
||||
if (!self->present) {
|
||||
IRDA_DEBUG(0, "%s(), Device is gone...\n", __FUNCTION__);
|
||||
IRDA_DEBUG(0, "%s(), Device is gone...\n", __func__);
|
||||
goto drop;
|
||||
}
|
||||
|
||||
|
@ -437,7 +437,7 @@ static int irda_usb_hard_xmit(struct sk_buff *skb, struct net_device *netdev)
|
|||
}
|
||||
|
||||
if (urb->status != 0) {
|
||||
IRDA_WARNING("%s(), URB still in use!\n", __FUNCTION__);
|
||||
IRDA_WARNING("%s(), URB still in use!\n", __func__);
|
||||
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 */
|
||||
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++;
|
||||
/* Let USB recover : We will catch that in the watchdog */
|
||||
/*netif_start_queue(netdev);*/
|
||||
|
@ -556,7 +556,7 @@ static void write_bulk_callback(struct urb *urb)
|
|||
struct sk_buff *skb = urb->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 */
|
||||
IRDA_ASSERT(self != NULL, return;);
|
||||
|
@ -570,7 +570,7 @@ static void write_bulk_callback(struct urb *urb)
|
|||
/* Check for timeout and other USB nasties */
|
||||
if (urb->status != 0) {
|
||||
/* 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,
|
||||
* 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 ((!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);
|
||||
return;
|
||||
}
|
||||
|
@ -600,7 +600,7 @@ static void write_bulk_callback(struct urb *urb)
|
|||
(self->new_xbofs != self->xbofs)) {
|
||||
/* We haven't changed speed yet (because of
|
||||
* 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);
|
||||
} else {
|
||||
/* 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;
|
||||
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;);
|
||||
|
||||
/* 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 */
|
||||
if (!self->present) {
|
||||
IRDA_WARNING("%s(), device not present!\n", __FUNCTION__);
|
||||
IRDA_WARNING("%s(), device not present!\n", __func__);
|
||||
netif_stop_queue(netdev);
|
||||
spin_unlock_irqrestore(&self->lock, flags);
|
||||
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;
|
||||
int ret;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
/* This should never happen */
|
||||
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***.
|
||||
* Basically, the Rx path will stop... */
|
||||
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;
|
||||
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 */
|
||||
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 ((!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 */
|
||||
return;
|
||||
}
|
||||
|
@ -840,7 +840,7 @@ static void irda_usb_receive(struct urb *urb)
|
|||
/* Usually precursor to a hot-unplug on OHCI. */
|
||||
default:
|
||||
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;
|
||||
}
|
||||
/* 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 */
|
||||
if (urb->actual_length <= self->header_length) {
|
||||
IRDA_WARNING("%s(), empty frame!\n", __FUNCTION__);
|
||||
IRDA_WARNING("%s(), empty frame!\n", __func__);
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
@ -967,7 +967,7 @@ static void irda_usb_rx_defer_expired(unsigned long data)
|
|||
struct irda_skb_cb *cb;
|
||||
struct urb *next_urb;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
/* Find ourselves */
|
||||
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,
|
||||
&actual_len, msecs_to_jiffies(500));
|
||||
IRDA_DEBUG(3,"%s(): Bulk send %u bytes, ret=%d\n",
|
||||
__FUNCTION__, actual_len, ret);
|
||||
__func__, actual_len, ret);
|
||||
|
||||
if (ret < 0)
|
||||
break;
|
||||
|
@ -1092,7 +1092,7 @@ static int stir421x_patch_device(struct irda_usb_cb *self)
|
|||
|
||||
/* We get a patch from userspace */
|
||||
IRDA_MESSAGE("%s(): Received firmware %s (%zu bytes)\n",
|
||||
__FUNCTION__, stir421x_fw_name, fw->size);
|
||||
__func__, stir421x_fw_name, fw->size);
|
||||
|
||||
ret = -EINVAL;
|
||||
|
||||
|
@ -1116,7 +1116,7 @@ static int stir421x_patch_device(struct irda_usb_cb *self)
|
|||
+ (build % 10);
|
||||
|
||||
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];
|
||||
int i;
|
||||
|
||||
IRDA_DEBUG(1, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s()\n", __func__);
|
||||
|
||||
IRDA_ASSERT(netdev != NULL, return -1;);
|
||||
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 */
|
||||
if(!self->present) {
|
||||
spin_unlock_irqrestore(&self->lock, flags);
|
||||
IRDA_WARNING("%s(), device not present!\n", __FUNCTION__);
|
||||
IRDA_WARNING("%s(), device not present!\n", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(self->needspatch) {
|
||||
spin_unlock_irqrestore(&self->lock, flags);
|
||||
IRDA_WARNING("%s(), device needs patch\n", __FUNCTION__) ;
|
||||
IRDA_WARNING("%s(), device needs patch\n", __func__) ;
|
||||
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***.
|
||||
* Basically, we can't start the Rx path... */
|
||||
IRDA_WARNING("%s(), Failed to allocate Rx skb\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
return -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;
|
||||
int i;
|
||||
|
||||
IRDA_DEBUG(1, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s()\n", __func__);
|
||||
|
||||
IRDA_ASSERT(netdev != NULL, return -1;);
|
||||
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;
|
||||
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) {
|
||||
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;
|
||||
|
||||
IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s()\n", __func__);
|
||||
|
||||
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;
|
||||
|
||||
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 */
|
||||
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;
|
||||
|
||||
IRDA_DEBUG(1, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s()\n", __func__);
|
||||
|
||||
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)
|
||||
{
|
||||
IRDA_DEBUG(1, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s()\n", __func__);
|
||||
|
||||
/* Remove netdevice */
|
||||
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 */
|
||||
self->bulk_int_ep = ep;
|
||||
} 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",
|
||||
__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));
|
||||
}
|
||||
|
@ -1583,7 +1583,7 @@ static inline struct irda_class_desc *irda_usb_find_class_desc(struct usb_interf
|
|||
0, intf->altsetting->desc.bInterfaceNumber, desc,
|
||||
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)) {
|
||||
IRDA_WARNING("usb-irda: class_descriptor read %s (%d)\n",
|
||||
(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
|
||||
* be fine and we don't need to do a usb_clear_halt().
|
||||
* - Jean II */
|
||||
IRDA_DEBUG(0, "%s(), Received -EPIPE, ignoring...\n", __FUNCTION__);
|
||||
IRDA_DEBUG(0, "%s(), Received -EPIPE, ignoring...\n", __func__);
|
||||
break;
|
||||
default:
|
||||
IRDA_DEBUG(0, "%s(), Unknown error %d\n", __FUNCTION__, ret);
|
||||
IRDA_DEBUG(0, "%s(), Unknown error %d\n", __func__, ret);
|
||||
ret = -EIO;
|
||||
goto err_out_3;
|
||||
}
|
||||
|
@ -1708,7 +1708,7 @@ static int irda_usb_probe(struct usb_interface *intf,
|
|||
interface = intf->cur_altsetting;
|
||||
if(!irda_usb_parse_endpoints(self, interface->endpoint,
|
||||
interface->desc.bNumEndpoints)) {
|
||||
IRDA_ERROR("%s(), Bogus endpoints...\n", __FUNCTION__);
|
||||
IRDA_ERROR("%s(), Bogus endpoints...\n", __func__);
|
||||
ret = -EIO;
|
||||
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);
|
||||
int i;
|
||||
|
||||
IRDA_DEBUG(1, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s()\n", __func__);
|
||||
|
||||
usb_set_intfdata(intf, NULL);
|
||||
if (!self)
|
||||
|
@ -1865,7 +1865,7 @@ static void irda_usb_disconnect(struct usb_interface *intf)
|
|||
|
||||
/* Free self and network device */
|
||||
free_netdev(self->netdev);
|
||||
IRDA_DEBUG(0, "%s(), USB IrDA Disconnected\n", __FUNCTION__);
|
||||
IRDA_DEBUG(0, "%s(), USB IrDA Disconnected\n", __func__);
|
||||
}
|
||||
|
||||
/*------------------------------------------------------------------*/
|
||||
|
|
|
@ -231,7 +231,7 @@ static void irtty_receive_buf(struct tty_struct *tty, const unsigned char *cp,
|
|||
|
||||
dev = priv->dev;
|
||||
if (!dev) {
|
||||
IRDA_WARNING("%s(), not ready yet!\n", __FUNCTION__);
|
||||
IRDA_WARNING("%s(), not ready yet!\n", __func__);
|
||||
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->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;
|
||||
IRDA_ASSERT(dev != NULL, return -1;);
|
||||
|
@ -476,7 +476,7 @@ static int irtty_open(struct tty_struct *tty)
|
|||
|
||||
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;
|
||||
|
||||
|
@ -528,7 +528,7 @@ static void irtty_close(struct tty_struct *tty)
|
|||
|
||||
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))) {
|
||||
IRDA_ERROR("%s(), can't unregister line discipline (err = %d)\n",
|
||||
__FUNCTION__, err);
|
||||
__func__, err);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -243,7 +243,7 @@ static void kingsun_rcv_irq(struct urb *urb)
|
|||
}
|
||||
} else if (urb->actual_length > 0) {
|
||||
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 */
|
||||
ret = usb_submit_urb(urb, GFP_ATOMIC);
|
||||
|
|
|
@ -78,7 +78,7 @@ static int litelink_open(struct sir_dev *dev)
|
|||
{
|
||||
struct qos_info *qos = &dev->qos;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
/* Power up dongle */
|
||||
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)
|
||||
{
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
/* Power off dongle */
|
||||
sirdev_set_dtr_rts(dev, FALSE, FALSE);
|
||||
|
@ -113,7 +113,7 @@ static int litelink_change_speed(struct sir_dev *dev, unsigned speed)
|
|||
{
|
||||
int i;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
/* dongle already reset by irda-thread - current speed (dongle and
|
||||
* 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)
|
||||
{
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
/* probably the power-up can be dropped here, but with only
|
||||
* 15 usec delay it's not worth the risk unless somebody with
|
||||
|
|
|
@ -67,13 +67,13 @@ static struct dongle_driver ma600 = {
|
|||
|
||||
static int __init ma600_sir_init(void)
|
||||
{
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
return irda_register_dongle(&ma600);
|
||||
}
|
||||
|
||||
static void __exit ma600_sir_cleanup(void)
|
||||
{
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
irda_unregister_dongle(&ma600);
|
||||
}
|
||||
|
||||
|
@ -88,7 +88,7 @@ static int ma600_open(struct sir_dev *dev)
|
|||
{
|
||||
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);
|
||||
|
||||
|
@ -106,7 +106,7 @@ static int ma600_open(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 */
|
||||
sirdev_set_dtr_rts(dev, FALSE, FALSE);
|
||||
|
@ -176,7 +176,7 @@ static int ma600_change_speed(struct sir_dev *dev, unsigned speed)
|
|||
{
|
||||
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);
|
||||
|
||||
/* 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));
|
||||
if (byte != get_control_byte(speed)) {
|
||||
IRDA_WARNING("%s(): bad control byte read-back %02x != %02x\n",
|
||||
__FUNCTION__, (unsigned) byte,
|
||||
__func__, (unsigned) byte,
|
||||
(unsigned) get_control_byte(speed));
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
IRDA_DEBUG(2, "%s() control byte write read OK\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s() control byte write read OK\n", __func__);
|
||||
#endif
|
||||
|
||||
/* 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)
|
||||
{
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
/* Reset the dongle : set DTR low for 10 ms */
|
||||
sirdev_set_dtr_rts(dev, FALSE, TRUE);
|
||||
|
|
|
@ -63,7 +63,7 @@ static int mcp2120_open(struct sir_dev *dev)
|
|||
{
|
||||
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 */
|
||||
|
||||
|
@ -76,7 +76,7 @@ static int mcp2120_open(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 */
|
||||
/* reset and inhibit mcp2120 */
|
||||
|
@ -102,7 +102,7 @@ static int mcp2120_change_speed(struct sir_dev *dev, unsigned speed)
|
|||
u8 control[2];
|
||||
static int ret = 0;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
switch (state) {
|
||||
case SIRDEV_STATE_DONGLE_SPEED:
|
||||
|
@ -155,7 +155,7 @@ static int mcp2120_change_speed(struct sir_dev *dev, unsigned speed)
|
|||
break;
|
||||
|
||||
default:
|
||||
IRDA_ERROR("%s(), undefine state %d\n", __FUNCTION__, state);
|
||||
IRDA_ERROR("%s(), undefine state %d\n", __func__, state);
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
@ -187,7 +187,7 @@ static int mcp2120_reset(struct sir_dev *dev)
|
|||
unsigned delay = 0;
|
||||
int ret = 0;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
switch (state) {
|
||||
case SIRDEV_STATE_DONGLE_RESET:
|
||||
|
@ -213,7 +213,7 @@ static int mcp2120_reset(struct sir_dev *dev)
|
|||
break;
|
||||
|
||||
default:
|
||||
IRDA_ERROR("%s(), undefined state %d\n", __FUNCTION__, state);
|
||||
IRDA_ERROR("%s(), undefined state %d\n", __func__, state);
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -151,8 +151,8 @@ static char *dongle_types[] = {
|
|||
static chipio_t pnp_info;
|
||||
static const struct pnp_device_id nsc_ircc_pnp_table[] = {
|
||||
{ .id = "NSC6001", .driver_data = 0 },
|
||||
{ .id = "IBM0071", .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 */
|
||||
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);
|
||||
|
||||
/* Try all config registers for this chip */
|
||||
|
@ -235,7 +235,7 @@ static int __init nsc_ircc_init(void)
|
|||
/* Read index register */
|
||||
reg = inb(cfg_base);
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -244,7 +244,7 @@ static int __init nsc_ircc_init(void)
|
|||
id = inb(cfg_base+1);
|
||||
if ((id & chip->cid_mask) == chip->cid_value) {
|
||||
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,
|
||||
|
@ -295,7 +295,7 @@ static int __init nsc_ircc_init(void)
|
|||
}
|
||||
i++;
|
||||
} 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;
|
||||
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++) {
|
||||
|
@ -354,7 +354,7 @@ static int __init nsc_ircc_open(chipio_t *info)
|
|||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -369,7 +369,7 @@ static int __init nsc_ircc_open(chipio_t *info)
|
|||
dev = alloc_irdadev(sizeof(struct nsc_ircc_cb));
|
||||
if (dev == NULL) {
|
||||
IRDA_ERROR("%s(), can't allocate memory for "
|
||||
"control block!\n", __FUNCTION__);
|
||||
"control block!\n", __func__);
|
||||
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);
|
||||
if (!ret) {
|
||||
IRDA_WARNING("%s(), can't get iobase of 0x%03x\n",
|
||||
__FUNCTION__, self->io.fir_base);
|
||||
__func__, self->io.fir_base);
|
||||
err = -ENODEV;
|
||||
goto out1;
|
||||
}
|
||||
|
@ -450,7 +450,7 @@ static int __init nsc_ircc_open(chipio_t *info)
|
|||
|
||||
err = register_netdev(dev);
|
||||
if (err) {
|
||||
IRDA_ERROR("%s(), register_netdev() failed!\n", __FUNCTION__);
|
||||
IRDA_ERROR("%s(), register_netdev() failed!\n", __func__);
|
||||
goto out4;
|
||||
}
|
||||
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;
|
||||
|
||||
IRDA_DEBUG(4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(4, "%s()\n", __func__);
|
||||
|
||||
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 */
|
||||
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);
|
||||
|
||||
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 0x3f8: outb(0x16, 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) */
|
||||
|
@ -569,7 +569,7 @@ static int nsc_ircc_init_108(nsc_chip_t *chip, chipio_t *info)
|
|||
case 9: temp = 0x05; break;
|
||||
case 11: temp = 0x06; 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);
|
||||
|
||||
|
@ -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 1: outb(0x10+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) */
|
||||
|
@ -616,7 +616,7 @@ static int nsc_ircc_probe_108(nsc_chip_t *chip, chipio_t *info)
|
|||
break;
|
||||
}
|
||||
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);
|
||||
|
||||
/* 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;
|
||||
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 */
|
||||
switch ((reg >> 3) & 0x03) {
|
||||
|
@ -666,7 +666,7 @@ static int nsc_ircc_probe_108(nsc_chip_t *chip, chipio_t *info)
|
|||
info->dma = 3;
|
||||
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) */
|
||||
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. */
|
||||
IRDA_DEBUG(2, "%s(): nsc_ircc_init_39x (user settings): "
|
||||
"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 */
|
||||
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;
|
||||
|
||||
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
|
||||
* 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);
|
||||
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 */
|
||||
|
||||
|
@ -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_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
|
||||
* 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);
|
||||
|
||||
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) ||
|
||||
(pnp_info.irq == -1) || (pnp_info.dma == -1)) {
|
||||
|
@ -976,7 +979,7 @@ static int nsc_ircc_setup(chipio_t *info)
|
|||
version = inb(iobase+MID);
|
||||
|
||||
IRDA_DEBUG(2, "%s() Driver %s Found chip version %02x\n",
|
||||
__FUNCTION__, driver_name, version);
|
||||
__func__, driver_name, version);
|
||||
|
||||
/* Should be 0x2? */
|
||||
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 0x01: /* Differential serial interface */
|
||||
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
|
||||
__FUNCTION__, dongle_types[dongle_id]);
|
||||
__func__, dongle_types[dongle_id]);
|
||||
break;
|
||||
case 0x02: /* same as */
|
||||
case 0x03: /* Reserved */
|
||||
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
|
||||
__FUNCTION__, dongle_types[dongle_id]);
|
||||
__func__, dongle_types[dongle_id]);
|
||||
break;
|
||||
case 0x04: /* Sharp RY5HD01 */
|
||||
break;
|
||||
case 0x05: /* Reserved, but this is what the Thinkpad reports */
|
||||
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
|
||||
__FUNCTION__, dongle_types[dongle_id]);
|
||||
__func__, dongle_types[dongle_id]);
|
||||
break;
|
||||
case 0x06: /* Single-ended serial interface */
|
||||
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
|
||||
__FUNCTION__, dongle_types[dongle_id]);
|
||||
__func__, dongle_types[dongle_id]);
|
||||
break;
|
||||
case 0x07: /* Consumer-IR only */
|
||||
IRDA_DEBUG(0, "%s(), %s is not for IrDA mode\n",
|
||||
__FUNCTION__, dongle_types[dongle_id]);
|
||||
__func__, dongle_types[dongle_id]);
|
||||
break;
|
||||
case 0x08: /* HP HSDL-2300, HP HSDL-3600/HSDL-3610 */
|
||||
IRDA_DEBUG(0, "%s(), %s\n",
|
||||
__FUNCTION__, dongle_types[dongle_id]);
|
||||
__func__, dongle_types[dongle_id]);
|
||||
break;
|
||||
case 0x09: /* IBM31T1100 or Temic TFDS6000/TFDS6500 */
|
||||
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 0x0B: /* Reserved */
|
||||
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
|
||||
__FUNCTION__, dongle_types[dongle_id]);
|
||||
__func__, dongle_types[dongle_id]);
|
||||
break;
|
||||
case 0x0C: /* same as */
|
||||
case 0x0D: /* HP HSDL-1100/HSDL-2100 */
|
||||
|
@ -1126,14 +1129,14 @@ static void nsc_ircc_init_dongle_interface (int iobase, int dongle_id)
|
|||
break;
|
||||
case 0x0F: /* No dongle connected */
|
||||
IRDA_DEBUG(0, "%s(), %s\n",
|
||||
__FUNCTION__, dongle_types[dongle_id]);
|
||||
__func__, dongle_types[dongle_id]);
|
||||
|
||||
switch_bank(iobase, BANK0);
|
||||
outb(0x62, iobase+MCR);
|
||||
break;
|
||||
default:
|
||||
IRDA_DEBUG(0, "%s(), invalid dongle_id %#x",
|
||||
__FUNCTION__, dongle_id);
|
||||
__func__, dongle_id);
|
||||
}
|
||||
|
||||
/* 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 0x01: /* Differential serial interface */
|
||||
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
|
||||
__FUNCTION__, dongle_types[dongle_id]);
|
||||
__func__, dongle_types[dongle_id]);
|
||||
break;
|
||||
case 0x02: /* same as */
|
||||
case 0x03: /* Reserved */
|
||||
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
|
||||
__FUNCTION__, dongle_types[dongle_id]);
|
||||
__func__, dongle_types[dongle_id]);
|
||||
break;
|
||||
case 0x04: /* Sharp RY5HD01 */
|
||||
break;
|
||||
case 0x05: /* Reserved */
|
||||
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
|
||||
__FUNCTION__, dongle_types[dongle_id]);
|
||||
__func__, dongle_types[dongle_id]);
|
||||
break;
|
||||
case 0x06: /* Single-ended serial interface */
|
||||
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
|
||||
__FUNCTION__, dongle_types[dongle_id]);
|
||||
__func__, dongle_types[dongle_id]);
|
||||
break;
|
||||
case 0x07: /* Consumer-IR only */
|
||||
IRDA_DEBUG(0, "%s(), %s is not for IrDA mode\n",
|
||||
__FUNCTION__, dongle_types[dongle_id]);
|
||||
__func__, dongle_types[dongle_id]);
|
||||
break;
|
||||
case 0x08: /* HP HSDL-2300, HP HSDL-3600/HSDL-3610 */
|
||||
IRDA_DEBUG(0, "%s(), %s\n",
|
||||
__FUNCTION__, dongle_types[dongle_id]);
|
||||
__func__, dongle_types[dongle_id]);
|
||||
outb(0x00, iobase+4);
|
||||
if (speed > 115200)
|
||||
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 0x0B: /* Reserved */
|
||||
IRDA_DEBUG(0, "%s(), %s not defined by irda yet\n",
|
||||
__FUNCTION__, dongle_types[dongle_id]);
|
||||
__func__, dongle_types[dongle_id]);
|
||||
break;
|
||||
case 0x0C: /* same as */
|
||||
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;
|
||||
case 0x0F: /* No dongle connected */
|
||||
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);
|
||||
outb(0x62, iobase+MCR);
|
||||
break;
|
||||
default:
|
||||
IRDA_DEBUG(0, "%s(), invalid data_rate\n", __FUNCTION__);
|
||||
IRDA_DEBUG(0, "%s(), invalid data_rate\n", __func__);
|
||||
}
|
||||
/* Restore bank register */
|
||||
outb(bank, iobase+BSR);
|
||||
|
@ -1243,7 +1246,7 @@ static __u8 nsc_ircc_change_speed(struct nsc_ircc_cb *self, __u32 speed)
|
|||
__u8 bank;
|
||||
__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;);
|
||||
|
||||
|
@ -1276,20 +1279,20 @@ static __u8 nsc_ircc_change_speed(struct nsc_ircc_cb *self, __u32 speed)
|
|||
outb(inb(iobase+4) | 0x04, iobase+4);
|
||||
|
||||
mcr = MCR_MIR;
|
||||
IRDA_DEBUG(0, "%s(), handling baud of 576000\n", __FUNCTION__);
|
||||
IRDA_DEBUG(0, "%s(), handling baud of 576000\n", __func__);
|
||||
break;
|
||||
case 1152000:
|
||||
mcr = MCR_MIR;
|
||||
IRDA_DEBUG(0, "%s(), handling baud of 1152000\n", __FUNCTION__);
|
||||
IRDA_DEBUG(0, "%s(), handling baud of 1152000\n", __func__);
|
||||
break;
|
||||
case 4000000:
|
||||
mcr = MCR_FIR;
|
||||
IRDA_DEBUG(0, "%s(), handling baud of 4000000\n", __FUNCTION__);
|
||||
IRDA_DEBUG(0, "%s(), handling baud of 4000000\n", __func__);
|
||||
break;
|
||||
default:
|
||||
mcr = MCR_FIR;
|
||||
IRDA_DEBUG(0, "%s(), unknown baud rate of %d\n",
|
||||
__FUNCTION__, speed);
|
||||
__func__, speed);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1594,7 +1597,7 @@ static int nsc_ircc_pio_write(int iobase, __u8 *buf, int len, int fifo_size)
|
|||
int actual = 0;
|
||||
__u8 bank;
|
||||
|
||||
IRDA_DEBUG(4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(4, "%s()\n", __func__);
|
||||
|
||||
/* Save current bank */
|
||||
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);
|
||||
if (!(inb_p(iobase+LSR) & LSR_TXEMP)) {
|
||||
IRDA_DEBUG(4, "%s(), warning, FIFO not empty yet!\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
|
||||
/* FIFO may still be filled to the Tx interrupt threshold */
|
||||
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",
|
||||
__FUNCTION__, fifo_size, actual, len);
|
||||
__func__, fifo_size, actual, len);
|
||||
|
||||
/* Restore bank */
|
||||
outb(bank, iobase+BSR);
|
||||
|
@ -1636,7 +1639,7 @@ static int nsc_ircc_dma_xmit_complete(struct nsc_ircc_cb *self)
|
|||
__u8 bank;
|
||||
int ret = TRUE;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
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);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -1859,7 +1862,7 @@ static int nsc_ircc_dma_receive_complete(struct nsc_ircc_cb *self, int iobase)
|
|||
if (skb == NULL) {
|
||||
IRDA_WARNING("%s(), memory squeeze, "
|
||||
"dropping frame.\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
self->stats.rx_dropped++;
|
||||
|
||||
/* 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
|
||||
* nsc_ircc_hard_xmit_sir() - Jean II */
|
||||
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->new_speed);
|
||||
self->new_speed = 0;
|
||||
|
@ -2051,7 +2054,7 @@ static void nsc_ircc_fir_interrupt(struct nsc_ircc_cb *self, int iobase,
|
|||
} else
|
||||
IRDA_WARNING("%s(), potential "
|
||||
"Tx queue lockup !\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
}
|
||||
} else {
|
||||
/* 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];
|
||||
__u8 bank;
|
||||
|
||||
IRDA_DEBUG(4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(4, "%s()\n", __func__);
|
||||
|
||||
IRDA_ASSERT(dev != NULL, return -1;);
|
||||
self = (struct nsc_ircc_cb *) dev->priv;
|
||||
|
@ -2222,7 +2225,7 @@ static int nsc_ircc_net_close(struct net_device *dev)
|
|||
int iobase;
|
||||
__u8 bank;
|
||||
|
||||
IRDA_DEBUG(4, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(4, "%s()\n", __func__);
|
||||
|
||||
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_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) {
|
||||
case SIOCSBANDWIDTH: /* Set bandwidth */
|
||||
|
|
|
@ -35,6 +35,9 @@
|
|||
#include <linux/types.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
/* Features for chips (set in driver_data) */
|
||||
#define NSC_FORCE_DONGLE_TYPE9 0x00000001
|
||||
|
||||
/* DMA modes needed */
|
||||
#define DMA_TX_MODE 0x08 /* Mem to I/O, ++, demand. */
|
||||
#define DMA_RX_MODE 0x04 /* I/O to mem, ++, demand. */
|
||||
|
|
|
@ -92,7 +92,7 @@ static int old_belkin_open(struct sir_dev *dev)
|
|||
{
|
||||
struct qos_info *qos = &dev->qos;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
/* Power on dongle */
|
||||
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)
|
||||
{
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
/* Power off dongle */
|
||||
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)
|
||||
{
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
dev->speed = 9600;
|
||||
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)
|
||||
{
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
/* This dongles speed "defaults" to 9600 bps ;-) */
|
||||
dev->speed = 9600;
|
||||
|
|
|
@ -80,7 +80,7 @@ static int sirdev_tx_complete_fsm(struct sir_dev *dev)
|
|||
return 0;
|
||||
|
||||
default:
|
||||
IRDA_ERROR("%s - undefined state\n", __FUNCTION__);
|
||||
IRDA_ERROR("%s - undefined state\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
fsm->substate = next_state;
|
||||
|
@ -107,11 +107,11 @@ static void sirdev_config_fsm(struct work_struct *work)
|
|||
int ret = -1;
|
||||
unsigned delay;
|
||||
|
||||
IRDA_DEBUG(2, "%s(), <%ld>\n", __FUNCTION__, jiffies);
|
||||
IRDA_DEBUG(2, "%s(), <%ld>\n", __func__, jiffies);
|
||||
|
||||
do {
|
||||
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;
|
||||
delay = 0;
|
||||
|
@ -249,12 +249,12 @@ static void sirdev_config_fsm(struct work_struct *work)
|
|||
break;
|
||||
|
||||
default:
|
||||
IRDA_ERROR("%s - undefined state\n", __FUNCTION__);
|
||||
IRDA_ERROR("%s - undefined state\n", __func__);
|
||||
fsm->result = -EINVAL;
|
||||
/* fall thru */
|
||||
|
||||
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 */
|
||||
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;
|
||||
|
||||
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 (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;
|
||||
} else
|
||||
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) {
|
||||
/* race with sirdev_close should never happen */
|
||||
IRDA_ERROR("%s(), instance staled!\n", __FUNCTION__);
|
||||
IRDA_ERROR("%s(), instance staled!\n", __func__);
|
||||
up(&fsm->sem);
|
||||
return -ESTALE; /* or better EPIPE? */
|
||||
}
|
||||
|
@ -341,7 +342,7 @@ int sirdev_set_dongle(struct sir_dev *dev, IRDA_DONGLE type)
|
|||
{
|
||||
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);
|
||||
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);
|
||||
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.len -= ret;
|
||||
|
@ -437,7 +438,7 @@ void sirdev_write_complete(struct sir_dev *dev)
|
|||
spin_lock_irqsave(&dev->tx_lock, flags);
|
||||
|
||||
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)) {
|
||||
/* Write data left in transmit buffer */
|
||||
|
@ -450,7 +451,7 @@ void sirdev_write_complete(struct sir_dev *dev)
|
|||
else if (unlikely(actual<0)) {
|
||||
/* could be dropped later when we have tx_timeout to recover */
|
||||
IRDA_ERROR("%s: drv->do_write failed (%d)\n",
|
||||
__FUNCTION__, actual);
|
||||
__func__, actual);
|
||||
if ((skb=dev->tx_skb) != NULL) {
|
||||
dev->tx_skb = NULL;
|
||||
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.
|
||||
*/
|
||||
|
||||
IRDA_DEBUG(3, "%s(), raw-tx done\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s(), raw-tx done\n", __func__);
|
||||
dev->raw_tx = 0;
|
||||
goto done; /* no post-frame handling in raw mode */
|
||||
}
|
||||
|
@ -488,7 +489,7 @@ void sirdev_write_complete(struct sir_dev *dev)
|
|||
* 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) {
|
||||
dev->tx_skb = NULL;
|
||||
|
@ -498,14 +499,14 @@ void sirdev_write_complete(struct sir_dev *dev)
|
|||
}
|
||||
|
||||
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);
|
||||
if (unlikely(err)) {
|
||||
/* should never happen
|
||||
* forget the speed change and hope the stack recovers
|
||||
*/
|
||||
IRDA_ERROR("%s - schedule speed change failed: %d\n",
|
||||
__FUNCTION__, err);
|
||||
__func__, err);
|
||||
netif_wake_queue(dev->netdev);
|
||||
}
|
||||
/* 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)
|
||||
{
|
||||
if (!dev || !dev->netdev) {
|
||||
IRDA_WARNING("%s(), not ready yet!\n", __FUNCTION__);
|
||||
IRDA_WARNING("%s(), not ready yet!\n", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!dev->irlap) {
|
||||
IRDA_WARNING("%s - too early: %p / %zd!\n",
|
||||
__FUNCTION__, cp, count);
|
||||
__func__, cp, count);
|
||||
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);
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -600,7 +601,7 @@ static int sirdev_hard_xmit(struct sk_buff *skb, struct net_device *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);
|
||||
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 */
|
||||
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 */
|
||||
|
@ -666,7 +667,7 @@ static int sirdev_hard_xmit(struct sk_buff *skb, struct net_device *ndev)
|
|||
else if (unlikely(actual < 0)) {
|
||||
/* could be dropped later when we have tx_timeout to recover */
|
||||
IRDA_ERROR("%s: drv->do_write failed (%d)\n",
|
||||
__FUNCTION__, actual);
|
||||
__func__, actual);
|
||||
dev_kfree_skb_any(skb);
|
||||
dev->stats.tx_errors++;
|
||||
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_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) {
|
||||
case SIOCSBANDWIDTH: /* Set bandwidth */
|
||||
|
@ -804,7 +805,7 @@ static int sirdev_open(struct net_device *ndev)
|
|||
if (!try_module_get(drv->owner))
|
||||
return -ESTALE;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
if (sirdev_alloc_buffers(dev))
|
||||
goto errout_dec;
|
||||
|
@ -822,7 +823,7 @@ static int sirdev_open(struct net_device *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;
|
||||
|
||||
|
@ -842,7 +843,7 @@ static int sirdev_close(struct net_device *ndev)
|
|||
struct sir_dev *dev = ndev->priv;
|
||||
const struct sir_driver *drv;
|
||||
|
||||
// IRDA_DEBUG(0, "%s\n", __FUNCTION__);
|
||||
// IRDA_DEBUG(0, "%s\n", __func__);
|
||||
|
||||
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 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
|
||||
* 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));
|
||||
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;
|
||||
}
|
||||
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;
|
||||
|
||||
if (register_netdev(ndev)) {
|
||||
IRDA_ERROR("%s(), register_netdev() failed!\n", __FUNCTION__);
|
||||
IRDA_ERROR("%s(), register_netdev() failed!\n", __func__);
|
||||
goto out_freenetdev;
|
||||
}
|
||||
|
||||
|
@ -938,7 +939,7 @@ int sirdev_put_instance(struct sir_dev *dev)
|
|||
{
|
||||
int err = 0;
|
||||
|
||||
IRDA_DEBUG(0, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(0, "%s\n", __func__);
|
||||
|
||||
atomic_set(&dev->enable_rx, 0);
|
||||
|
||||
|
@ -948,7 +949,7 @@ int sirdev_put_instance(struct sir_dev *dev)
|
|||
if (dev->dongle_drv)
|
||||
err = sirdev_schedule_dongle_close(dev);
|
||||
if (err)
|
||||
IRDA_ERROR("%s - error %d\n", __FUNCTION__, err);
|
||||
IRDA_ERROR("%s - error %d\n", __func__, err);
|
||||
|
||||
sirdev_close(dev->netdev);
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ int irda_register_dongle(struct dongle_driver *new)
|
|||
struct dongle_driver *drv;
|
||||
|
||||
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);
|
||||
list_for_each(entry, &dongle_list) {
|
||||
|
|
|
@ -460,7 +460,7 @@ static int __init smsc_ircc_init(void)
|
|||
{
|
||||
int ret;
|
||||
|
||||
IRDA_DEBUG(1, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s\n", __func__);
|
||||
|
||||
ret = platform_driver_register(&smsc_ircc_driver);
|
||||
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;
|
||||
int err;
|
||||
|
||||
IRDA_DEBUG(1, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s\n", __func__);
|
||||
|
||||
err = smsc_ircc_present(fir_base, sir_base);
|
||||
if (err)
|
||||
|
@ -508,7 +508,7 @@ static int __init smsc_ircc_open(unsigned int fir_base, unsigned int sir_base, u
|
|||
|
||||
err = -ENOMEM;
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
driver_name)) {
|
||||
IRDA_WARNING("%s: can't get fir_base of 0x%03x\n",
|
||||
__FUNCTION__, fir_base);
|
||||
__func__, fir_base);
|
||||
goto out1;
|
||||
}
|
||||
|
||||
if (!request_region(sir_base, SMSC_IRCC2_SIR_CHIP_IO_EXTENT,
|
||||
driver_name)) {
|
||||
IRDA_WARNING("%s: can't get sir_base of 0x%03x\n",
|
||||
__FUNCTION__, sir_base);
|
||||
__func__, sir_base);
|
||||
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)) {
|
||||
IRDA_WARNING("%s(), addr 0x%04x - no device found!\n",
|
||||
__FUNCTION__, fir_base);
|
||||
__func__, fir_base);
|
||||
goto out3;
|
||||
}
|
||||
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_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) {
|
||||
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;
|
||||
s32 speed;
|
||||
|
||||
IRDA_DEBUG(1, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s\n", __func__);
|
||||
|
||||
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;
|
||||
ctrl = IRCC_CRC;
|
||||
fast = 0;
|
||||
IRDA_DEBUG(0, "%s(), handling baud of 576000\n", __FUNCTION__);
|
||||
IRDA_DEBUG(0, "%s(), handling baud of 576000\n", __func__);
|
||||
break;
|
||||
case 1152000:
|
||||
ir_mode = IRCC_CFGA_IRDA_HDLC;
|
||||
ctrl = IRCC_1152 | IRCC_CRC;
|
||||
fast = IRCC_LCR_A_FAST | IRCC_LCR_A_GP_DATA;
|
||||
IRDA_DEBUG(0, "%s(), handling baud of 1152000\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
break;
|
||||
case 4000000:
|
||||
ir_mode = IRCC_CFGA_IRDA_4PPM;
|
||||
ctrl = IRCC_CRC;
|
||||
fast = IRCC_LCR_A_FAST;
|
||||
IRDA_DEBUG(0, "%s(), handling baud of 4000000\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
break;
|
||||
}
|
||||
#if 0
|
||||
|
@ -995,7 +995,7 @@ static void smsc_ircc_fir_start(struct smsc_ircc_cb *self)
|
|||
struct net_device *dev;
|
||||
int fir_base;
|
||||
|
||||
IRDA_DEBUG(1, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s\n", __func__);
|
||||
|
||||
IRDA_ASSERT(self != NULL, return;);
|
||||
dev = self->netdev;
|
||||
|
@ -1043,7 +1043,7 @@ static void smsc_ircc_fir_stop(struct smsc_ircc_cb *self)
|
|||
{
|
||||
int fir_base;
|
||||
|
||||
IRDA_DEBUG(1, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s\n", __func__);
|
||||
|
||||
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;
|
||||
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;);
|
||||
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 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;);
|
||||
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 */
|
||||
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;
|
||||
u8 ctrl;
|
||||
|
||||
IRDA_DEBUG(3, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s\n", __func__);
|
||||
#if 1
|
||||
/* Disable Rx */
|
||||
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;
|
||||
|
||||
IRDA_DEBUG(3, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s\n", __func__);
|
||||
#if 0
|
||||
/* Disable Tx */
|
||||
register_bank(iobase, 0);
|
||||
|
@ -1411,7 +1411,7 @@ static void smsc_ircc_dma_receive_complete(struct smsc_ircc_cb *self)
|
|||
|
||||
register_bank(iobase, 0);
|
||||
|
||||
IRDA_DEBUG(3, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s\n", __func__);
|
||||
#if 0
|
||||
/* Disable Rx */
|
||||
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);
|
||||
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));
|
||||
|
||||
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;
|
||||
|
||||
if (len < 2 || len > 2050) {
|
||||
IRDA_WARNING("%s(), bogus len=%d\n", __FUNCTION__, len);
|
||||
IRDA_WARNING("%s(), bogus len=%d\n", __func__, len);
|
||||
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);
|
||||
if (!skb) {
|
||||
IRDA_WARNING("%s(), memory squeeze, dropping frame.\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
return;
|
||||
}
|
||||
/* 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 */
|
||||
if (boguscount++ > 32) {
|
||||
IRDA_DEBUG(2, "%s(), breaking!\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), breaking!\n", __func__);
|
||||
break;
|
||||
}
|
||||
} 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);
|
||||
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 (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) {
|
||||
/*printk(KERN_WARNING "%s(): Active Frame\n", __FUNCTION__);*/
|
||||
/*printk(KERN_WARNING "%s(): Active Frame\n", __func__);*/
|
||||
}
|
||||
|
||||
/* Enable interrupts again */
|
||||
|
@ -1587,11 +1587,11 @@ static irqreturn_t smsc_ircc_interrupt_sir(struct net_device *dev)
|
|||
lsr = inb(iobase + UART_LSR);
|
||||
|
||||
IRDA_DEBUG(4, "%s(), iir=%02x, lsr=%02x, iobase=%#x\n",
|
||||
__FUNCTION__, iir, lsr, iobase);
|
||||
__func__, iir, lsr, iobase);
|
||||
|
||||
switch (iir) {
|
||||
case UART_IIR_RLSI:
|
||||
IRDA_DEBUG(2, "%s(), RLSI\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(), RLSI\n", __func__);
|
||||
break;
|
||||
case UART_IIR_RDI:
|
||||
/* Receive interrupt */
|
||||
|
@ -1604,7 +1604,7 @@ static irqreturn_t smsc_ircc_interrupt_sir(struct net_device *dev)
|
|||
break;
|
||||
default:
|
||||
IRDA_DEBUG(0, "%s(), unhandled IIR=%#x\n",
|
||||
__FUNCTION__, iir);
|
||||
__func__, iir);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1631,11 +1631,11 @@ static int ircc_is_receiving(struct smsc_ircc_cb *self)
|
|||
int status = FALSE;
|
||||
/* int iobase; */
|
||||
|
||||
IRDA_DEBUG(1, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s\n", __func__);
|
||||
|
||||
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));
|
||||
|
||||
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);
|
||||
if (error)
|
||||
IRDA_DEBUG(0, "%s(), unable to allocate irq=%d, err=%d\n",
|
||||
__FUNCTION__, self->io.irq, error);
|
||||
__func__, self->io.irq, error);
|
||||
|
||||
return error;
|
||||
}
|
||||
|
@ -1696,21 +1696,21 @@ static int smsc_ircc_net_open(struct net_device *dev)
|
|||
struct smsc_ircc_cb *self;
|
||||
char hwname[16];
|
||||
|
||||
IRDA_DEBUG(1, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s\n", __func__);
|
||||
|
||||
IRDA_ASSERT(dev != NULL, return -1;);
|
||||
self = netdev_priv(dev);
|
||||
IRDA_ASSERT(self != NULL, return 0;);
|
||||
|
||||
if (self->io.suspended) {
|
||||
IRDA_DEBUG(0, "%s(), device is suspended\n", __FUNCTION__);
|
||||
IRDA_DEBUG(0, "%s(), device is suspended\n", __func__);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
if (request_irq(self->io.irq, smsc_ircc_interrupt, 0, dev->name,
|
||||
(void *) dev)) {
|
||||
IRDA_DEBUG(0, "%s(), unable to allocate irq=%d\n",
|
||||
__FUNCTION__, self->io.irq);
|
||||
__func__, self->io.irq);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
|
@ -1734,7 +1734,7 @@ static int smsc_ircc_net_open(struct net_device *dev)
|
|||
smsc_ircc_net_close(dev);
|
||||
|
||||
IRDA_WARNING("%s(), unable to allocate DMA=%d\n",
|
||||
__FUNCTION__, self->io.dma);
|
||||
__func__, self->io.dma);
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
|
@ -1753,7 +1753,7 @@ static int smsc_ircc_net_close(struct net_device *dev)
|
|||
{
|
||||
struct smsc_ircc_cb *self;
|
||||
|
||||
IRDA_DEBUG(1, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s\n", __func__);
|
||||
|
||||
IRDA_ASSERT(dev != NULL, return -1;);
|
||||
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)
|
||||
{
|
||||
IRDA_DEBUG(1, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s\n", __func__);
|
||||
|
||||
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);
|
||||
|
||||
/* 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);
|
||||
|
||||
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);
|
||||
|
||||
release_region(self->io.sir_base, self->io.sir_ext);
|
||||
|
@ -1875,7 +1875,7 @@ static void __exit smsc_ircc_cleanup(void)
|
|||
{
|
||||
int i;
|
||||
|
||||
IRDA_DEBUG(1, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s\n", __func__);
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
if (dev_self[i])
|
||||
|
@ -1899,7 +1899,7 @@ void smsc_ircc_sir_start(struct smsc_ircc_cb *self)
|
|||
struct net_device *dev;
|
||||
int fir_base, sir_base;
|
||||
|
||||
IRDA_DEBUG(3, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s\n", __func__);
|
||||
|
||||
IRDA_ASSERT(self != NULL, return;);
|
||||
dev = self->netdev;
|
||||
|
@ -1926,7 +1926,7 @@ void smsc_ircc_sir_start(struct smsc_ircc_cb *self)
|
|||
/* Turn on interrups */
|
||||
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);
|
||||
}
|
||||
|
@ -1936,7 +1936,7 @@ void smsc_ircc_sir_stop(struct smsc_ircc_cb *self)
|
|||
{
|
||||
int iobase;
|
||||
|
||||
IRDA_DEBUG(3, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s\n", __func__);
|
||||
iobase = self->io.sir_base;
|
||||
|
||||
/* Reset UART */
|
||||
|
@ -1962,7 +1962,7 @@ static void smsc_ircc_sir_write_wakeup(struct smsc_ircc_cb *self)
|
|||
|
||||
IRDA_ASSERT(self != NULL, return;);
|
||||
|
||||
IRDA_DEBUG(4, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(4, "%s\n", __func__);
|
||||
|
||||
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) {
|
||||
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_change_speed(self, self->new_speed);
|
||||
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! */
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -2123,7 +2123,7 @@ static void smsc_ircc_sir_wait_hw_transmitter_finish(struct smsc_ircc_cb *self)
|
|||
udelay(1);
|
||||
|
||||
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) {
|
||||
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) {
|
||||
type = "FDC";
|
||||
|
@ -2184,7 +2184,7 @@ static int __init smsc_superio_flat(const struct smsc_chip *chips, unsigned shor
|
|||
u8 mode, dma, irq;
|
||||
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)
|
||||
return ret;
|
||||
|
@ -2192,10 +2192,10 @@ static int __init smsc_superio_flat(const struct smsc_chip *chips, unsigned shor
|
|||
outb(SMSCSIOFLAT_UARTMODE0C_REG, cfgbase);
|
||||
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))
|
||||
IRDA_WARNING("%s(): IrDA not enabled\n", __FUNCTION__);
|
||||
IRDA_WARNING("%s(): IrDA not enabled\n", __func__);
|
||||
|
||||
outb(SMSCSIOFLAT_UART2BASEADDR_REG, cfgbase);
|
||||
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);
|
||||
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)
|
||||
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;
|
||||
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)
|
||||
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)
|
||||
{
|
||||
IRDA_DEBUG(1, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s\n", __func__);
|
||||
|
||||
outb(reg, cfg_base);
|
||||
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;
|
||||
|
||||
IRDA_DEBUG(1, "%s\n", __FUNCTION__);
|
||||
IRDA_DEBUG(1, "%s\n", __func__);
|
||||
|
||||
/* Leave configuration */
|
||||
|
||||
|
@ -2353,7 +2353,7 @@ static int __init smsc_superio_fdc(unsigned short cfg_base)
|
|||
|
||||
if (!request_region(cfg_base, 2, driver_name)) {
|
||||
IRDA_WARNING("%s: can't get cfg_base of 0x%03x\n",
|
||||
__FUNCTION__, cfg_base);
|
||||
__func__, cfg_base);
|
||||
} else {
|
||||
if (!smsc_superio_flat(fdc_chips_flat, 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)) {
|
||||
IRDA_WARNING("%s: can't get cfg_base of 0x%03x\n",
|
||||
__FUNCTION__, cfg_base);
|
||||
__func__, cfg_base);
|
||||
} else {
|
||||
if (!smsc_superio_flat(lpc_chips_flat, 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 */;
|
||||
|
||||
if (val)
|
||||
IRDA_WARNING("%s(): ATC: 0x%02x\n", __FUNCTION__,
|
||||
IRDA_WARNING("%s(): ATC: 0x%02x\n", __func__,
|
||||
inb(fir_base + IRCC_ATC));
|
||||
}
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ static int tekram_open(struct sir_dev *dev)
|
|||
{
|
||||
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);
|
||||
|
||||
|
@ -92,7 +92,7 @@ static int tekram_open(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 */
|
||||
sirdev_set_dtr_rts(dev, FALSE, FALSE);
|
||||
|
@ -130,7 +130,7 @@ static int tekram_change_speed(struct sir_dev *dev, unsigned speed)
|
|||
u8 byte;
|
||||
static int ret = 0;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
switch(state) {
|
||||
case SIRDEV_STATE_DONGLE_SPEED:
|
||||
|
@ -179,7 +179,7 @@ static int tekram_change_speed(struct sir_dev *dev, unsigned speed)
|
|||
break;
|
||||
|
||||
default:
|
||||
IRDA_ERROR("%s - undefined state %d\n", __FUNCTION__, state);
|
||||
IRDA_ERROR("%s - undefined state %d\n", __func__, state);
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
@ -204,7 +204,7 @@ static int tekram_change_speed(struct sir_dev *dev, unsigned speed)
|
|||
|
||||
static int tekram_reset(struct sir_dev *dev)
|
||||
{
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
/* Clear DTR, Set RTS */
|
||||
sirdev_set_dtr_rts(dev, FALSE, TRUE);
|
||||
|
|
|
@ -181,7 +181,7 @@ static int toim3232_open(struct sir_dev *dev)
|
|||
{
|
||||
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.
|
||||
*
|
||||
|
@ -209,7 +209,7 @@ static int toim3232_open(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 */
|
||||
sirdev_set_dtr_rts(dev, FALSE, FALSE);
|
||||
|
@ -241,7 +241,7 @@ static int toim3232_change_speed(struct sir_dev *dev, unsigned speed)
|
|||
u8 byte;
|
||||
static int ret = 0;
|
||||
|
||||
IRDA_DEBUG(2, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s()\n", __func__);
|
||||
|
||||
switch(state) {
|
||||
case SIRDEV_STATE_DONGLE_SPEED:
|
||||
|
@ -299,7 +299,7 @@ static int toim3232_change_speed(struct sir_dev *dev, unsigned speed)
|
|||
break;
|
||||
|
||||
default:
|
||||
printk(KERN_ERR "%s - undefined state %d\n", __FUNCTION__, state);
|
||||
printk(KERN_ERR "%s - undefined state %d\n", __func__, state);
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
|
@ -344,7 +344,7 @@ static int toim3232_change_speed(struct sir_dev *dev, unsigned speed)
|
|||
|
||||
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 */
|
||||
sirdev_set_dtr_rts(dev, FALSE, FALSE);
|
||||
|
|
|
@ -152,12 +152,12 @@ static int __init via_ircc_init(void)
|
|||
{
|
||||
int rc;
|
||||
|
||||
IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s()\n", __func__);
|
||||
|
||||
rc = pci_register_driver(&via_driver);
|
||||
if (rc < 0) {
|
||||
IRDA_DEBUG(0, "%s(): error rc = %d, returning -ENODEV...\n",
|
||||
__FUNCTION__, rc);
|
||||
__func__, rc);
|
||||
return -ENODEV;
|
||||
}
|
||||
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;
|
||||
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);
|
||||
if (rc) {
|
||||
IRDA_DEBUG(0, "%s(): error rc = %d\n", __FUNCTION__, rc);
|
||||
IRDA_DEBUG(0, "%s(): error rc = %d\n", __func__, rc);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
@ -185,7 +185,7 @@ static int __devinit via_init_one (struct pci_dev *pcidev, const struct pci_devi
|
|||
Chipset=0x3076;
|
||||
|
||||
if (Chipset==0x3076) {
|
||||
IRDA_DEBUG(2, "%s(): Chipset = 3076\n", __FUNCTION__);
|
||||
IRDA_DEBUG(2, "%s(): Chipset = 3076\n", __func__);
|
||||
|
||||
WriteLPCReg(7,0x0c );
|
||||
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
|
||||
rc = -ENODEV; //IR not turn on
|
||||
} 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
|
||||
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 !!!!!
|
||||
}//Not VT1211
|
||||
|
||||
IRDA_DEBUG(2, "%s(): End - rc = %d\n", __FUNCTION__, rc);
|
||||
IRDA_DEBUG(2, "%s(): End - rc = %d\n", __func__, rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -276,7 +276,7 @@ static void via_ircc_clean(void)
|
|||
{
|
||||
int i;
|
||||
|
||||
IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s()\n", __func__);
|
||||
|
||||
for (i=0; i < ARRAY_SIZE(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)
|
||||
{
|
||||
IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s()\n", __func__);
|
||||
|
||||
/* FIXME : This is ugly. We should use pci_get_drvdata(pdev);
|
||||
* 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)
|
||||
{
|
||||
IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s()\n", __func__);
|
||||
|
||||
/* FIXME : This should be redundant, as pci_unregister_driver()
|
||||
* 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;
|
||||
int err;
|
||||
|
||||
IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s()\n", __func__);
|
||||
|
||||
if (i >= ARRAY_SIZE(dev_self))
|
||||
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 */
|
||||
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",
|
||||
__FUNCTION__, self->io.fir_base);
|
||||
__func__, self->io.fir_base);
|
||||
err = -ENODEV;
|
||||
goto err_out1;
|
||||
}
|
||||
|
@ -471,7 +471,7 @@ static int via_ircc_close(struct via_ircc_cb *self)
|
|||
{
|
||||
int iobase;
|
||||
|
||||
IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s()\n", __func__);
|
||||
|
||||
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 */
|
||||
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);
|
||||
if (self->tx_buff.head)
|
||||
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;
|
||||
|
||||
IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s()\n", __func__);
|
||||
|
||||
SetMaxRxPacketSize(iobase, 0x0fff); //set to max:4095
|
||||
// FIFO Init
|
||||
|
@ -582,7 +582,7 @@ static void via_ircc_change_dongle_speed(int iobase, int speed,
|
|||
speed = speed;
|
||||
|
||||
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) {
|
||||
|
||||
|
@ -671,7 +671,7 @@ static void via_ircc_change_dongle_speed(int iobase, int speed,
|
|||
|
||||
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
|
||||
InvertTX(iobase, OFF);
|
||||
|
@ -689,7 +689,7 @@ static void via_ircc_change_dongle_speed(int iobase, int speed,
|
|||
SlowIRRXLowActive(iobase, OFF);
|
||||
|
||||
} 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;
|
||||
|
||||
|
@ -707,7 +707,7 @@ static void via_ircc_change_dongle_speed(int iobase, int speed,
|
|||
|
||||
default:
|
||||
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;
|
||||
/* Update accounting for new 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);
|
||||
|
||||
|
@ -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_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",
|
||||
__FUNCTION__, self->tx_fifo.ptr,
|
||||
__func__, self->tx_fifo.ptr,
|
||||
self->tx_fifo.queue[self->tx_fifo.ptr].len,
|
||||
self->tx_fifo.len);
|
||||
|
||||
|
@ -981,7 +981,7 @@ static int via_ircc_dma_xmit_complete(struct via_ircc_cb *self)
|
|||
int ret = TRUE;
|
||||
u8 Tx_status;
|
||||
|
||||
IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s()\n", __func__);
|
||||
|
||||
iobase = self->io.fir_base;
|
||||
/* Disable DMA */
|
||||
|
@ -1014,7 +1014,7 @@ static int via_ircc_dma_xmit_complete(struct via_ircc_cb *self)
|
|||
}
|
||||
IRDA_DEBUG(1,
|
||||
"%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);
|
||||
/* F01_S
|
||||
// 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;
|
||||
|
||||
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.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
|
||||
if (((len - 4) < 2) || ((len - 4) > 2048)) {
|
||||
IRDA_DEBUG(1, "%s(): Trouble:len=%x,CurCount=%x,LastCount=%x..\n",
|
||||
__FUNCTION__, len, RxCurCount(iobase, self),
|
||||
__func__, len, RxCurCount(iobase, self),
|
||||
self->RxLastCount);
|
||||
hwreset(self);
|
||||
return FALSE;
|
||||
}
|
||||
IRDA_DEBUG(2, "%s(): fifo.len=%x,len=%x,CurCount=%x..\n",
|
||||
__FUNCTION__,
|
||||
__func__,
|
||||
st_fifo->len, len - 4, RxCurCount(iobase, self));
|
||||
|
||||
st_fifo->entries[st_fifo->tail].status = status;
|
||||
|
@ -1187,7 +1187,7 @@ F01_E */
|
|||
skb_put(skb, 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);
|
||||
|
||||
// Move to next frame
|
||||
|
@ -1217,7 +1217,7 @@ static int upload_rxdata(struct via_ircc_cb *self, int iobase)
|
|||
|
||||
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) {
|
||||
self->stats.rx_dropped++;
|
||||
|
@ -1302,7 +1302,7 @@ static int RxTimerHandler(struct via_ircc_cb *self, int iobase)
|
|||
skb_put(skb, 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);
|
||||
|
||||
// Move to next frame
|
||||
|
@ -1318,7 +1318,7 @@ static int RxTimerHandler(struct via_ircc_cb *self, int iobase)
|
|||
|
||||
IRDA_DEBUG(2,
|
||||
"%s(): End of upload HostStatus=%x,RxStatus=%x\n",
|
||||
__FUNCTION__,
|
||||
__func__,
|
||||
GetHostStatus(iobase), GetRXStatus(iobase));
|
||||
|
||||
/*
|
||||
|
@ -1358,7 +1358,7 @@ static irqreturn_t via_ircc_interrupt(int dummy, void *dev_id)
|
|||
iHostIntType = GetHostStatus(iobase);
|
||||
|
||||
IRDA_DEBUG(4, "%s(): iHostIntType %02x: %s %s %s %02x\n",
|
||||
__FUNCTION__, iHostIntType,
|
||||
__func__, iHostIntType,
|
||||
(iHostIntType & 0x40) ? "Timer" : "",
|
||||
(iHostIntType & 0x20) ? "Tx" : "",
|
||||
(iHostIntType & 0x10) ? "Rx" : "",
|
||||
|
@ -1388,7 +1388,7 @@ static irqreturn_t via_ircc_interrupt(int dummy, void *dev_id)
|
|||
iTxIntType = GetTXStatus(iobase);
|
||||
|
||||
IRDA_DEBUG(4, "%s(): iTxIntType %02x: %s %s %s %s\n",
|
||||
__FUNCTION__, iTxIntType,
|
||||
__func__, iTxIntType,
|
||||
(iTxIntType & 0x08) ? "FIFO underr." : "",
|
||||
(iTxIntType & 0x04) ? "EOM" : "",
|
||||
(iTxIntType & 0x02) ? "FIFO ready" : "",
|
||||
|
@ -1412,7 +1412,7 @@ static irqreturn_t via_ircc_interrupt(int dummy, void *dev_id)
|
|||
iRxIntType = GetRXStatus(iobase);
|
||||
|
||||
IRDA_DEBUG(4, "%s(): iRxIntType %02x: %s %s %s %s %s %s %s\n",
|
||||
__FUNCTION__, iRxIntType,
|
||||
__func__, iRxIntType,
|
||||
(iRxIntType & 0x80) ? "PHY err." : "",
|
||||
(iRxIntType & 0x40) ? "CRC err" : "",
|
||||
(iRxIntType & 0x20) ? "FIFO overr." : "",
|
||||
|
@ -1421,7 +1421,7 @@ static irqreturn_t via_ircc_interrupt(int dummy, void *dev_id)
|
|||
(iRxIntType & 0x02) ? "RxMaxLen" : "",
|
||||
(iRxIntType & 0x01) ? "SIR bad" : "");
|
||||
if (!iRxIntType)
|
||||
IRDA_DEBUG(3, "%s(): RxIRQ =0\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s(): RxIRQ =0\n", __func__);
|
||||
|
||||
if (iRxIntType & 0x10) {
|
||||
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
|
||||
else { //ERR
|
||||
IRDA_DEBUG(4, "%s(): RxIRQ ERR:iRxIntType=%x,HostIntType=%x,CurCount=%x,RxLastCount=%x_____\n",
|
||||
__FUNCTION__, iRxIntType, iHostIntType,
|
||||
__func__, iRxIntType, iHostIntType,
|
||||
RxCurCount(iobase, self),
|
||||
self->RxLastCount);
|
||||
|
||||
|
@ -1456,7 +1456,7 @@ static void hwreset(struct via_ircc_cb *self)
|
|||
int iobase;
|
||||
iobase = self->io.fir_base;
|
||||
|
||||
IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s()\n", __func__);
|
||||
|
||||
ResetChip(iobase, 5);
|
||||
EnableDMA(iobase, OFF);
|
||||
|
@ -1501,7 +1501,7 @@ static int via_ircc_is_receiving(struct via_ircc_cb *self)
|
|||
if (CkRxRecv(iobase, self))
|
||||
status = TRUE;
|
||||
|
||||
IRDA_DEBUG(2, "%s(): status=%x....\n", __FUNCTION__, status);
|
||||
IRDA_DEBUG(2, "%s(): status=%x....\n", __func__, status);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
@ -1519,7 +1519,7 @@ static int via_ircc_net_open(struct net_device *dev)
|
|||
int iobase;
|
||||
char hwname[32];
|
||||
|
||||
IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s()\n", __func__);
|
||||
|
||||
IRDA_ASSERT(dev != NULL, return -1;);
|
||||
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;
|
||||
int iobase;
|
||||
|
||||
IRDA_DEBUG(3, "%s()\n", __FUNCTION__);
|
||||
IRDA_DEBUG(3, "%s()\n", __func__);
|
||||
|
||||
IRDA_ASSERT(dev != NULL, return -1;);
|
||||
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;);
|
||||
self = dev->priv;
|
||||
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);
|
||||
/* Disable interrupts & save flags */
|
||||
spin_lock_irqsave(&self->lock, flags);
|
||||
|
|
|
@ -140,15 +140,15 @@ static void vlsi_ring_debug(struct vlsi_ring *r)
|
|||
unsigned i;
|
||||
|
||||
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);
|
||||
printk(KERN_DEBUG "%s - head = %d / tail = %d\n", __FUNCTION__,
|
||||
__func__, r, r->size, r->mask, r->len, r->dir, r->rd[0].hw);
|
||||
printk(KERN_DEBUG "%s - head = %d / tail = %d\n", __func__,
|
||||
atomic_read(&r->head) & r->mask, atomic_read(&r->tail) & r->mask);
|
||||
for (i = 0; i < r->size; 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(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));
|
||||
}
|
||||
}
|
||||
|
@ -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))) {
|
||||
if (rd->buf) {
|
||||
IRDA_ERROR("%s: failed to create PCI-MAP for %p",
|
||||
__FUNCTION__, rd->buf);
|
||||
__func__, rd->buf);
|
||||
kfree(rd->buf);
|
||||
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);
|
||||
if (!ringarea) {
|
||||
IRDA_ERROR("%s: insufficient memory for descriptor rings\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
goto out;
|
||||
}
|
||||
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);
|
||||
len -= crclen; /* remove trailing CRC */
|
||||
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;
|
||||
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);
|
||||
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;
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
if (!rd->skb) {
|
||||
IRDA_WARNING("%s: rx packet lost\n", __FUNCTION__);
|
||||
IRDA_WARNING("%s: rx packet lost\n", __func__);
|
||||
ret |= VLSI_RX_DROP;
|
||||
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)) {
|
||||
if (rd_is_active(rd)) {
|
||||
IRDA_WARNING("%s: driver bug: rx descr race with hw\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
vlsi_ring_debug(r);
|
||||
break;
|
||||
}
|
||||
|
@ -676,7 +676,7 @@ static void vlsi_rx_interrupt(struct net_device *ndev)
|
|||
|
||||
if (ring_first(r) == NULL) {
|
||||
/* 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);
|
||||
}
|
||||
else
|
||||
|
@ -697,7 +697,7 @@ static void vlsi_unarm_rx(vlsi_irda_dev_t *idev)
|
|||
if (rd_is_active(rd)) {
|
||||
rd_set_status(rd, 0);
|
||||
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;
|
||||
}
|
||||
rd_set_count(rd, 0);
|
||||
|
@ -772,7 +772,7 @@ static int vlsi_set_baud(vlsi_irda_dev_t *idev, unsigned iobase)
|
|||
int fifocnt;
|
||||
|
||||
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) {
|
||||
mode = IFF_FIR;
|
||||
config = IRCFG_FIR;
|
||||
|
@ -789,7 +789,7 @@ static int vlsi_set_baud(vlsi_irda_dev_t *idev, unsigned iobase)
|
|||
switch(baudrate) {
|
||||
default:
|
||||
IRDA_WARNING("%s: undefined baudrate %d - fallback to 9600!\n",
|
||||
__FUNCTION__, baudrate);
|
||||
__func__, baudrate);
|
||||
baudrate = 9600;
|
||||
/* fallthru */
|
||||
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;
|
||||
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);
|
||||
|
@ -830,14 +830,14 @@ static int vlsi_set_baud(vlsi_irda_dev_t *idev, unsigned iobase)
|
|||
config ^= IRENABLE_SIR_ON;
|
||||
|
||||
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"));
|
||||
ret = -1;
|
||||
}
|
||||
else {
|
||||
if (inw(iobase+VLSI_PIO_PHYCTL) != nphyctl) {
|
||||
IRDA_WARNING("%s: failed to apply baudrate %d\n",
|
||||
__FUNCTION__, baudrate);
|
||||
__func__, baudrate);
|
||||
ret = -1;
|
||||
}
|
||||
else {
|
||||
|
@ -849,7 +849,7 @@ static int vlsi_set_baud(vlsi_irda_dev_t *idev, unsigned iobase)
|
|||
}
|
||||
|
||||
if (ret)
|
||||
vlsi_reg_debug(iobase,__FUNCTION__);
|
||||
vlsi_reg_debug(iobase,__func__);
|
||||
|
||||
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)
|
||||
IRDA_WARNING("%s: possible buffer overflow with SIR wrapping!\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
}
|
||||
else {
|
||||
/* 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;
|
||||
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);
|
||||
|
@ -1040,7 +1040,7 @@ static int vlsi_hard_start_xmit(struct sk_buff *skb, struct net_device *ndev)
|
|||
|
||||
if (ring_put(r) == NULL) {
|
||||
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);
|
||||
|
||||
|
@ -1049,7 +1049,7 @@ static int vlsi_hard_start_xmit(struct sk_buff *skb, struct net_device *ndev)
|
|||
drop_unlock:
|
||||
spin_unlock_irqrestore(&idev->lock, flags);
|
||||
drop:
|
||||
IRDA_WARNING("%s: dropping packet - %s\n", __FUNCTION__, msg);
|
||||
IRDA_WARNING("%s: dropping packet - %s\n", __func__, msg);
|
||||
dev_kfree_skb_any(skb);
|
||||
idev->stats.tx_errors++;
|
||||
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;
|
||||
if (fifocnt != 0) {
|
||||
IRDA_DEBUG(0, "%s: rx fifo not empty(%d)\n",
|
||||
__FUNCTION__, fifocnt);
|
||||
__func__, fifocnt);
|
||||
}
|
||||
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) {
|
||||
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);
|
||||
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;
|
||||
}
|
||||
else
|
||||
|
@ -1188,7 +1188,7 @@ static int vlsi_start_clock(struct pci_dev *pdev)
|
|||
if (count < 3) {
|
||||
if (clksrc == 1) { /* explicitly asked for PLL hence bail out */
|
||||
IRDA_ERROR("%s: no PLL or failed to lock!\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
clkctl = CLKCTL_CLKSTP;
|
||||
pci_write_config_byte(pdev, VLSI_PCI_CLKCTL, clkctl);
|
||||
return -1;
|
||||
|
@ -1197,7 +1197,7 @@ static int vlsi_start_clock(struct pci_dev *pdev)
|
|||
clksrc = 3; /* fallback to 40MHz XCLK (OB800) */
|
||||
|
||||
IRDA_DEBUG(0, "%s: PLL not locked, fallback to clksrc=%d\n",
|
||||
__FUNCTION__, clksrc);
|
||||
__func__, clksrc);
|
||||
}
|
||||
else
|
||||
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 */
|
||||
|
||||
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;
|
||||
}
|
||||
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_reg_debug(ndev->base_addr, __FUNCTION__);
|
||||
vlsi_reg_debug(ndev->base_addr, __func__);
|
||||
vlsi_ring_debug(idev->tx_ring);
|
||||
|
||||
if (netif_running(ndev))
|
||||
|
@ -1401,7 +1401,7 @@ static void vlsi_tx_timeout(struct net_device *ndev)
|
|||
|
||||
if (vlsi_start_hw(idev))
|
||||
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
|
||||
netif_start_queue(ndev);
|
||||
}
|
||||
|
@ -1446,7 +1446,7 @@ static int vlsi_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd)
|
|||
break;
|
||||
default:
|
||||
IRDA_WARNING("%s: notsupp - cmd=%04x\n",
|
||||
__FUNCTION__, cmd);
|
||||
__func__, cmd);
|
||||
ret = -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
|
@ -1491,7 +1491,7 @@ static irqreturn_t vlsi_interrupt(int irq, void *dev_instance)
|
|||
|
||||
if (boguscount <= 0)
|
||||
IRDA_MESSAGE("%s: too much work in interrupt!\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
return IRQ_RETVAL(handled);
|
||||
}
|
||||
|
||||
|
@ -1504,7 +1504,7 @@ static int vlsi_open(struct net_device *ndev)
|
|||
char hwname[32];
|
||||
|
||||
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;
|
||||
}
|
||||
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,
|
||||
drivername, ndev)) {
|
||||
IRDA_WARNING("%s: couldn't get IRQ: %d\n",
|
||||
__FUNCTION__, ndev->irq);
|
||||
__func__, ndev->irq);
|
||||
goto errout_io;
|
||||
}
|
||||
|
||||
|
@ -1540,7 +1540,7 @@ static int vlsi_open(struct net_device *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;
|
||||
|
||||
|
@ -1574,7 +1574,7 @@ static int vlsi_close(struct net_device *ndev)
|
|||
|
||||
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;
|
||||
}
|
||||
|
@ -1593,7 +1593,7 @@ static int vlsi_irda_init(struct net_device *ndev)
|
|||
|
||||
if (pci_set_dma_mask(pdev,DMA_MASK_USED_BY_HW)
|
||||
|| 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;
|
||||
}
|
||||
|
||||
|
@ -1645,14 +1645,14 @@ vlsi_irda_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
|
||||
if ( !pci_resource_start(pdev,0)
|
||||
|| !(pci_resource_flags(pdev,0) & IORESOURCE_IO) ) {
|
||||
IRDA_ERROR("%s: bar 0 invalid", __FUNCTION__);
|
||||
IRDA_ERROR("%s: bar 0 invalid", __func__);
|
||||
goto out_disable;
|
||||
}
|
||||
|
||||
ndev = alloc_irdadev(sizeof(*idev));
|
||||
if (ndev==NULL) {
|
||||
IRDA_ERROR("%s: Unable to allocate device memory.\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
goto out_disable;
|
||||
}
|
||||
|
||||
|
@ -1667,7 +1667,7 @@ vlsi_irda_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
goto out_freedev;
|
||||
|
||||
if (register_netdev(ndev) < 0) {
|
||||
IRDA_ERROR("%s: register_netdev failed\n", __FUNCTION__);
|
||||
IRDA_ERROR("%s: register_netdev failed\n", __func__);
|
||||
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);
|
||||
if (!ent) {
|
||||
IRDA_WARNING("%s: failed to create proc entry\n",
|
||||
__FUNCTION__);
|
||||
__func__);
|
||||
} else {
|
||||
ent->size = 0;
|
||||
}
|
||||
|
@ -1745,7 +1745,7 @@ static int vlsi_irda_suspend(struct pci_dev *pdev, pm_message_t state)
|
|||
|
||||
if (!ndev) {
|
||||
IRDA_ERROR("%s - %s: no netdevice \n",
|
||||
__FUNCTION__, pci_name(pdev));
|
||||
__func__, pci_name(pdev));
|
||||
return 0;
|
||||
}
|
||||
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;
|
||||
}
|
||||
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);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1784,7 +1784,7 @@ static int vlsi_irda_resume(struct pci_dev *pdev)
|
|||
|
||||
if (!ndev) {
|
||||
IRDA_ERROR("%s - %s: no netdevice \n",
|
||||
__FUNCTION__, pci_name(pdev));
|
||||
__func__, pci_name(pdev));
|
||||
return 0;
|
||||
}
|
||||
idev = ndev->priv;
|
||||
|
@ -1792,7 +1792,7 @@ static int vlsi_irda_resume(struct pci_dev *pdev)
|
|||
if (pdev->current_state == 0) {
|
||||
mutex_unlock(&idev->mtx);
|
||||
IRDA_WARNING("%s - %s: already resumed\n",
|
||||
__FUNCTION__, pci_name(pdev));
|
||||
__func__, pci_name(pdev));
|
||||
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
|
||||
* 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);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
IRDA_ERROR("%s: pci busaddr inconsistency!\n", __FUNCTION__);
|
||||
IRDA_ERROR("%s: pci busaddr inconsistency!\n", __func__);
|
||||
dump_stack();
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -114,7 +114,7 @@ static int __init w83977af_init(void)
|
|||
{
|
||||
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++) {
|
||||
if (w83977af_open(i, io[i], irq[i], dma[i]) == 0)
|
||||
|
@ -133,7 +133,7 @@ static void __exit w83977af_cleanup(void)
|
|||
{
|
||||
int i;
|
||||
|
||||
IRDA_DEBUG(4, "%s()\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(4, "%s()\n", __func__ );
|
||||
|
||||
for (i=0; i < ARRAY_SIZE(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;
|
||||
int err;
|
||||
|
||||
IRDA_DEBUG(0, "%s()\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(0, "%s()\n", __func__ );
|
||||
|
||||
/* Lock the port that we need */
|
||||
if (!request_region(iobase, CHIP_IO_EXTENT, driver_name)) {
|
||||
IRDA_DEBUG(0, "%s(), can't get iobase of 0x%03x\n",
|
||||
__FUNCTION__ , iobase);
|
||||
__func__ , iobase);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
@ -241,7 +241,7 @@ int w83977af_open(int i, unsigned int iobase, unsigned int irq,
|
|||
|
||||
err = register_netdev(dev);
|
||||
if (err) {
|
||||
IRDA_ERROR("%s(), register_netdevice() failed!\n", __FUNCTION__);
|
||||
IRDA_ERROR("%s(), register_netdevice() failed!\n", __func__);
|
||||
goto err_out3;
|
||||
}
|
||||
IRDA_MESSAGE("IrDA: Registered device %s\n", dev->name);
|
||||
|
@ -273,7 +273,7 @@ static int w83977af_close(struct w83977af_ir *self)
|
|||
{
|
||||
int iobase;
|
||||
|
||||
IRDA_DEBUG(0, "%s()\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(0, "%s()\n", __func__ );
|
||||
|
||||
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 */
|
||||
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);
|
||||
|
||||
if (self->tx_buff.head)
|
||||
|
@ -316,7 +316,7 @@ int w83977af_probe( int iobase, int irq, int dma)
|
|||
int i;
|
||||
|
||||
for (i=0; i < 2; i++) {
|
||||
IRDA_DEBUG( 0, "%s()\n", __FUNCTION__ );
|
||||
IRDA_DEBUG( 0, "%s()\n", __func__ );
|
||||
#ifdef CONFIG_USE_W977_PNP
|
||||
/* Enter PnP configuration mode */
|
||||
w977_efm_enter(efbase[i]);
|
||||
|
@ -403,7 +403,7 @@ int w83977af_probe( int iobase, int irq, int dma)
|
|||
return 0;
|
||||
} else {
|
||||
/* Try next extented function register address */
|
||||
IRDA_DEBUG( 0, "%s(), Wrong chip version", __FUNCTION__ );
|
||||
IRDA_DEBUG( 0, "%s(), Wrong chip version", __func__ );
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
|
@ -439,19 +439,19 @@ void w83977af_change_speed(struct w83977af_ir *self, __u32 speed)
|
|||
case 115200: outb(0x01, iobase+ABLL); break;
|
||||
case 576000:
|
||||
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;
|
||||
case 1152000:
|
||||
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;
|
||||
case 4000000:
|
||||
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;
|
||||
default:
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -501,7 +501,7 @@ int w83977af_hard_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||
|
||||
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);
|
||||
|
||||
/* Lock transmit buffer */
|
||||
|
@ -549,7 +549,7 @@ int w83977af_hard_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||
outb(ICR_ETMRI, iobase+ICR);
|
||||
} else {
|
||||
#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)
|
||||
udelay(mtt);
|
||||
|
||||
|
@ -591,7 +591,7 @@ static void w83977af_dma_write(struct w83977af_ir *self, int iobase)
|
|||
unsigned long flags;
|
||||
__u8 hcr;
|
||||
#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 */
|
||||
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;
|
||||
__u8 set;
|
||||
|
||||
IRDA_DEBUG(4, "%s()\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(4, "%s()\n", __func__ );
|
||||
|
||||
/* Save current bank */
|
||||
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);
|
||||
if (!(inb_p(iobase+USR) & USR_TSRE)) {
|
||||
IRDA_DEBUG(4,
|
||||
"%s(), warning, FIFO not empty yet!\n", __FUNCTION__ );
|
||||
"%s(), warning, FIFO not empty yet!\n", __func__ );
|
||||
|
||||
fifo_size -= 17;
|
||||
IRDA_DEBUG(4, "%s(), %d bytes left in tx fifo\n",
|
||||
__FUNCTION__ , fifo_size);
|
||||
__func__ , fifo_size);
|
||||
}
|
||||
|
||||
/* 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",
|
||||
__FUNCTION__ , fifo_size, actual, len);
|
||||
__func__ , fifo_size, actual, len);
|
||||
|
||||
/* Restore bank */
|
||||
outb(set, iobase+SSR);
|
||||
|
@ -685,7 +685,7 @@ static void w83977af_dma_xmit_complete(struct w83977af_ir *self)
|
|||
int iobase;
|
||||
__u8 set;
|
||||
|
||||
IRDA_DEBUG(4, "%s(%ld)\n", __FUNCTION__ , jiffies);
|
||||
IRDA_DEBUG(4, "%s(%ld)\n", __func__ , jiffies);
|
||||
|
||||
IRDA_ASSERT(self != NULL, return;);
|
||||
|
||||
|
@ -700,7 +700,7 @@ static void w83977af_dma_xmit_complete(struct w83977af_ir *self)
|
|||
|
||||
/* Check for underrrun! */
|
||||
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_fifo_errors++;
|
||||
|
@ -741,7 +741,7 @@ int w83977af_dma_receive(struct w83977af_ir *self)
|
|||
#endif
|
||||
IRDA_ASSERT(self != NULL, return -1;);
|
||||
|
||||
IRDA_DEBUG(4, "%s\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(4, "%s\n", __func__ );
|
||||
|
||||
iobase= self->io.fir_base;
|
||||
|
||||
|
@ -812,7 +812,7 @@ int w83977af_dma_receive_complete(struct w83977af_ir *self)
|
|||
__u8 set;
|
||||
__u8 status;
|
||||
|
||||
IRDA_DEBUG(4, "%s\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(4, "%s\n", __func__ );
|
||||
|
||||
st_fifo = &self->st_fifo;
|
||||
|
||||
|
@ -892,7 +892,7 @@ int w83977af_dma_receive_complete(struct w83977af_ir *self)
|
|||
skb = dev_alloc_skb(len+1);
|
||||
if (skb == NULL) {
|
||||
printk(KERN_INFO
|
||||
"%s(), memory squeeze, dropping frame.\n", __FUNCTION__);
|
||||
"%s(), memory squeeze, dropping frame.\n", __func__);
|
||||
/* Restore set register */
|
||||
outb(set, iobase+SSR);
|
||||
|
||||
|
@ -943,7 +943,7 @@ static void w83977af_pio_receive(struct w83977af_ir *self)
|
|||
__u8 byte = 0x00;
|
||||
int iobase;
|
||||
|
||||
IRDA_DEBUG(4, "%s()\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(4, "%s()\n", __func__ );
|
||||
|
||||
IRDA_ASSERT(self != NULL, return;);
|
||||
|
||||
|
@ -970,7 +970,7 @@ static __u8 w83977af_sir_interrupt(struct w83977af_ir *self, int isr)
|
|||
__u8 set;
|
||||
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;
|
||||
/* 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? */
|
||||
if (self->new_speed) {
|
||||
IRDA_DEBUG(2,
|
||||
"%s(), Changing speed!\n", __FUNCTION__ );
|
||||
"%s(), Changing speed!\n", __func__ );
|
||||
w83977af_change_speed(self, self->new_speed);
|
||||
self->new_speed = 0;
|
||||
}
|
||||
|
@ -1189,7 +1189,7 @@ static int w83977af_net_open(struct net_device *dev)
|
|||
char hwname[32];
|
||||
__u8 set;
|
||||
|
||||
IRDA_DEBUG(0, "%s()\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(0, "%s()\n", __func__ );
|
||||
|
||||
IRDA_ASSERT(dev != NULL, return -1;);
|
||||
self = (struct w83977af_ir *) dev->priv;
|
||||
|
@ -1252,7 +1252,7 @@ static int w83977af_net_close(struct net_device *dev)
|
|||
int iobase;
|
||||
__u8 set;
|
||||
|
||||
IRDA_DEBUG(0, "%s()\n", __FUNCTION__ );
|
||||
IRDA_DEBUG(0, "%s()\n", __func__ );
|
||||
|
||||
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_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);
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
#include <asm/system.h>
|
||||
|
||||
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_NAPI
|
||||
|
@ -90,12 +90,21 @@ static char mv643xx_eth_driver_version[] = "1.1";
|
|||
#define PORT_SERIAL_CONTROL(p) (0x043c + ((p) << 10))
|
||||
#define PORT_STATUS(p) (0x0444 + ((p) << 10))
|
||||
#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_FIX_PRIO_CONF(p) (0x044c + ((p) << 10))
|
||||
#define TX_BW_RATE(p) (0x0450 + ((p) << 10))
|
||||
#define TX_BW_MTU(p) (0x0458 + ((p) << 10))
|
||||
#define TX_BW_BURST(p) (0x045c + ((p) << 10))
|
||||
#define INT_CAUSE(p) (0x0460 + ((p) << 10))
|
||||
#define INT_TX_END_0 0x00080000
|
||||
#define INT_TX_END 0x07f80000
|
||||
#define INT_RX 0x0007fbfc
|
||||
#define INT_EXT 0x00000002
|
||||
|
@ -127,21 +136,21 @@ static char mv643xx_eth_driver_version[] = "1.1";
|
|||
/*
|
||||
* 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_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)
|
||||
#define PORT_SDMA_CONFIG_DEFAULT_VALUE \
|
||||
RX_BURST_SIZE_4_64BIT | \
|
||||
TX_BURST_SIZE_4_64BIT
|
||||
RX_BURST_SIZE_16_64BIT | \
|
||||
TX_BURST_SIZE_16_64BIT
|
||||
#elif defined(__LITTLE_ENDIAN)
|
||||
#define PORT_SDMA_CONFIG_DEFAULT_VALUE \
|
||||
RX_BURST_SIZE_4_64BIT | \
|
||||
RX_BURST_SIZE_16_64BIT | \
|
||||
BLM_RX_NO_SWAP | \
|
||||
BLM_TX_NO_SWAP | \
|
||||
TX_BURST_SIZE_4_64BIT
|
||||
TX_BURST_SIZE_16_64BIT
|
||||
#else
|
||||
#error One of __BIG_ENDIAN or __LITTLE_ENDIAN must be defined
|
||||
#endif
|
||||
|
@ -153,9 +162,7 @@ static char mv643xx_eth_driver_version[] = "1.1";
|
|||
#define SET_MII_SPEED_TO_100 (1 << 24)
|
||||
#define SET_GMII_SPEED_TO_1000 (1 << 23)
|
||||
#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_MASK (7 << 17)
|
||||
#define DISABLE_AUTO_NEG_SPEED_GMII (1 << 13)
|
||||
#define DO_NOT_FORCE_LINK_FAIL (1 << 10)
|
||||
#define SERIAL_PORT_CONTROL_RESERVED (1 << 9)
|
||||
|
@ -228,6 +235,8 @@ struct tx_desc {
|
|||
#define GEN_IP_V4_CHECKSUM 0x00040000
|
||||
#define GEN_TCP_UDP_CHECKSUM 0x00020000
|
||||
#define UDP_FRAME 0x00010000
|
||||
#define MAC_HDR_EXTRA_4_BYTES 0x00008000
|
||||
#define MAC_HDR_EXTRA_8_BYTES 0x00000200
|
||||
|
||||
#define TX_IHL_SHIFT 11
|
||||
|
||||
|
@ -404,6 +413,17 @@ static void rxq_disable(struct rx_queue *rxq)
|
|||
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)
|
||||
{
|
||||
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++)
|
||||
if (mp->txq_mask & (1 << i))
|
||||
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
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
struct mv643xx_eth_private *mp = txq_to_mp(txq);
|
||||
int nr_frags = skb_shinfo(skb)->nr_frags;
|
||||
int tx_index;
|
||||
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);
|
||||
|
||||
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 |
|
||||
GEN_IP_V4_CHECKSUM |
|
||||
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) {
|
||||
case IPPROTO_UDP:
|
||||
cmd_sts |= UDP_FRAME;
|
||||
|
@ -759,6 +810,10 @@ static void txq_submit_skb(struct tx_queue *txq, struct sk_buff *skb)
|
|||
wmb();
|
||||
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 */
|
||||
wmb();
|
||||
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)
|
||||
{
|
||||
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->advertising = ADVERTISED_MII;
|
||||
cmd->speed = SPEED_1000;
|
||||
cmd->duplex = DUPLEX_FULL;
|
||||
switch (port_status & PORT_SPEED_MASK) {
|
||||
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->phy_address = 0;
|
||||
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;
|
||||
for (i = 0; i < txq->tx_ring_size; i++) {
|
||||
struct tx_desc *txd = tx_desc + i;
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -1577,8 +1653,11 @@ static void txq_reclaim(struct tx_queue *txq, int force)
|
|||
desc = &txq->tx_desc_area[tx_index];
|
||||
cmd_sts = desc->cmd_sts;
|
||||
|
||||
if (!force && (cmd_sts & BUFFER_OWNED_BY_DMA))
|
||||
break;
|
||||
if (cmd_sts & BUFFER_OWNED_BY_DMA) {
|
||||
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_desc_count--;
|
||||
|
@ -1632,49 +1711,61 @@ static void txq_deinit(struct tx_queue *txq)
|
|||
|
||||
|
||||
/* 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;
|
||||
u32 pscr_n;
|
||||
struct net_device *dev = mp->dev;
|
||||
u32 port_status;
|
||||
int speed;
|
||||
int duplex;
|
||||
int fc;
|
||||
|
||||
pscr_o = rdl(mp, PORT_SERIAL_CONTROL(mp->port_num));
|
||||
|
||||
/* clear speed, duplex and rx buffer size fields */
|
||||
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 {
|
||||
port_status = rdl(mp, PORT_STATUS(mp->port_num));
|
||||
if (!(port_status & LINK_UP)) {
|
||||
if (netif_carrier_ok(dev)) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
if (mp->txq_mask & (1 << i))
|
||||
txq_disable(mp->txq + i);
|
||||
printk(KERN_INFO "%s: link down\n", dev->name);
|
||||
|
||||
pscr_o &= ~SERIAL_PORT_ENABLE;
|
||||
wrl(mp, PORT_SERIAL_CONTROL(mp->port_num), pscr_o);
|
||||
wrl(mp, PORT_SERIAL_CONTROL(mp->port_num), pscr_n);
|
||||
wrl(mp, PORT_SERIAL_CONTROL(mp->port_num), pscr_n);
|
||||
netif_carrier_off(dev);
|
||||
netif_stop_queue(dev);
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
if (mp->txq_mask & (1 << i))
|
||||
txq_enable(mp->txq + i);
|
||||
for (i = 0; i < 8; i++) {
|
||||
struct tx_queue *txq = 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);
|
||||
u32 int_cause;
|
||||
u32 int_cause_ext;
|
||||
u32 txq_active;
|
||||
|
||||
int_cause = rdl(mp, INT_CAUSE(mp->port_num)) &
|
||||
(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);
|
||||
}
|
||||
|
||||
if (int_cause_ext & (INT_EXT_PHY | INT_EXT_LINK)) {
|
||||
if (mp->phy_addr == -1 || mii_link_ok(&mp->mii)) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
if (int_cause_ext & (INT_EXT_PHY | INT_EXT_LINK))
|
||||
handle_link_event(mp);
|
||||
|
||||
/*
|
||||
* 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
|
||||
|
||||
txq_active = rdl(mp, TXQ_COMMAND(mp->port_num));
|
||||
|
||||
/*
|
||||
* 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++)
|
||||
if (mp->txq_mask & (1 << i))
|
||||
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;
|
||||
|
||||
wrl(mp, INT_CAUSE(mp->port_num), ~(int_cause & INT_TX_END));
|
||||
|
||||
spin_lock(&mp->lock);
|
||||
for (i = 0; i < 8; 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);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 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);
|
||||
spin_unlock(&mp->lock);
|
||||
}
|
||||
|
||||
return IRQ_HANDLED;
|
||||
|
@ -1785,14 +1867,14 @@ static void phy_reset(struct mv643xx_eth_private *mp)
|
|||
{
|
||||
unsigned int data;
|
||||
|
||||
smi_reg_read(mp, mp->phy_addr, 0, &data);
|
||||
data |= 0x8000;
|
||||
smi_reg_write(mp, mp->phy_addr, 0, data);
|
||||
smi_reg_read(mp, mp->phy_addr, MII_BMCR, &data);
|
||||
data |= BMCR_RESET;
|
||||
smi_reg_write(mp, mp->phy_addr, MII_BMCR, data);
|
||||
|
||||
do {
|
||||
udelay(1);
|
||||
smi_reg_read(mp, mp->phy_addr, 0, &data);
|
||||
} while (data & 0x8000);
|
||||
smi_reg_read(mp, mp->phy_addr, MII_BMCR, &data);
|
||||
} while (data & BMCR_RESET);
|
||||
}
|
||||
|
||||
static void port_start(struct mv643xx_eth_private *mp)
|
||||
|
@ -1800,23 +1882,6 @@ static void port_start(struct mv643xx_eth_private *mp)
|
|||
u32 pscr;
|
||||
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.
|
||||
*/
|
||||
|
@ -1828,22 +1893,32 @@ static void port_start(struct mv643xx_eth_private *mp)
|
|||
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.
|
||||
*/
|
||||
tx_set_rate(mp, 1000000000, 16777216);
|
||||
for (i = 0; i < 8; 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)
|
||||
continue;
|
||||
|
||||
addr = (u32)txq->tx_desc_dma;
|
||||
addr += txq->tx_curr_desc * sizeof(struct tx_desc);
|
||||
wrl(mp, off, addr);
|
||||
|
||||
txq_reset_hw_ptr(txq);
|
||||
txq_set_rate(txq, 1000000000, 16777216);
|
||||
txq_set_fixed_prio_mode(txq);
|
||||
}
|
||||
|
@ -1965,6 +2040,9 @@ static int mv643xx_eth_open(struct net_device *dev)
|
|||
napi_enable(&mp->napi);
|
||||
#endif
|
||||
|
||||
netif_carrier_off(dev);
|
||||
netif_stop_queue(dev);
|
||||
|
||||
port_start(mp);
|
||||
|
||||
set_rx_coal(mp, 0);
|
||||
|
@ -1999,8 +2077,14 @@ static void port_reset(struct mv643xx_eth_private *mp)
|
|||
if (mp->txq_mask & (1 << 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);
|
||||
}
|
||||
|
||||
/* Reset the Enable bit in the Configuration Register */
|
||||
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;
|
||||
|
||||
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;
|
||||
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 data2;
|
||||
|
||||
smi_reg_read(mp, mp->phy_addr, 0, &data);
|
||||
smi_reg_write(mp, mp->phy_addr, 0, data ^ 0x1000);
|
||||
smi_reg_read(mp, mp->phy_addr, MII_BMCR, &data);
|
||||
smi_reg_write(mp, mp->phy_addr, MII_BMCR, data ^ BMCR_ANENABLE);
|
||||
|
||||
smi_reg_read(mp, mp->phy_addr, 0, &data2);
|
||||
if (((data ^ data2) & 0x1000) == 0)
|
||||
smi_reg_read(mp, mp->phy_addr, MII_BMCR, &data2);
|
||||
if (((data ^ data2) & BMCR_ANENABLE) == 0)
|
||||
return -ENODEV;
|
||||
|
||||
smi_reg_write(mp, mp->phy_addr, 0, data);
|
||||
smi_reg_write(mp, mp->phy_addr, MII_BMCR, data);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -2393,12 +2478,39 @@ static int phy_init(struct mv643xx_eth_private *mp,
|
|||
cmd.duplex = pd->duplex;
|
||||
}
|
||||
|
||||
update_pscr(mp, cmd.speed, cmd.duplex);
|
||||
mv643xx_eth_set_settings(mp->dev, &cmd);
|
||||
|
||||
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)
|
||||
{
|
||||
struct mv643xx_eth_platform_data *pd;
|
||||
|
@ -2452,6 +2564,7 @@ static int mv643xx_eth_probe(struct platform_device *pdev)
|
|||
} else {
|
||||
SET_ETHTOOL_OPS(dev, &mv643xx_eth_ethtool_ops_phyless);
|
||||
}
|
||||
init_pscr(mp, pd->speed, pd->duplex);
|
||||
|
||||
|
||||
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
|
||||
*/
|
||||
dev->features = NETIF_F_SG | NETIF_F_IP_CSUM;
|
||||
dev->vlan_features = NETIF_F_SG | NETIF_F_IP_CSUM;
|
||||
#endif
|
||||
|
||||
SET_NETDEV_DEV(dev, &pdev->dev);
|
||||
|
|
|
@ -536,7 +536,7 @@ static int __init ne_probe1(struct net_device *dev, unsigned long ioaddr)
|
|||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
dev->poll_controller = eip_poll;
|
||||
#endif
|
||||
NS8390_init(dev, 0);
|
||||
NS8390p_init(dev, 0);
|
||||
|
||||
ret = register_netdev(dev);
|
||||
if (ret)
|
||||
|
@ -794,7 +794,7 @@ retry:
|
|||
if (time_after(jiffies, dma_start + 2*HZ/100)) { /* 20ms */
|
||||
printk(KERN_WARNING "%s: timeout waiting for Tx RDC.\n", dev->name);
|
||||
ne_reset_8390(dev);
|
||||
NS8390_init(dev,1);
|
||||
NS8390p_init(dev, 1);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -855,7 +855,7 @@ static int ne_drv_resume(struct platform_device *pdev)
|
|||
|
||||
if (netif_running(dev)) {
|
||||
ne_reset_8390(dev);
|
||||
NS8390_init(dev, 1);
|
||||
NS8390p_init(dev, 1);
|
||||
netif_device_attach(dev);
|
||||
}
|
||||
return 0;
|
||||
|
|
|
@ -3143,7 +3143,7 @@ static void tx_intr_handler(struct fifo_info *fifo_data)
|
|||
pkt_cnt++;
|
||||
|
||||
/* 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;
|
||||
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 */
|
||||
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 =
|
||||
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 =
|
||||
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 =
|
||||
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 =
|
||||
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 =
|
||||
le64_to_cpu(mac_control->stats_info->rmac_long_frms);
|
||||
|
||||
/* 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++) {
|
||||
sp->stats.rx_packets += mac_control->rings[i].rx_packets;
|
||||
sp->stats.rx_bytes += mac_control->rings[i].rx_bytes;
|
||||
dev->stats.rx_packets += mac_control->rings[i].rx_packets;
|
||||
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) {
|
||||
DBG_PRINT(ERR_DBG, "%s: Rx error Value: 0x%x\n",
|
||||
dev->name, err_mask);
|
||||
sp->stats.rx_crc_errors++;
|
||||
dev->stats.rx_crc_errors++;
|
||||
sp->mac_control.stats_info->sw_stat.mem_freed
|
||||
+= skb->truesize;
|
||||
dev_kfree_skb(skb);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* SuperH Ethernet device driver
|
||||
*
|
||||
* Copyright (C) 2006,2007 Nobuhiro Iwamatsu
|
||||
* Copyright (C) 2006-2008 Nobuhiro Iwamatsu
|
||||
* Copyright (C) 2008 Renesas Solutions Corp.
|
||||
*
|
||||
* 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,
|
||||
};
|
||||
|
||||
/* Chip Reset */
|
||||
static void sh_eth_reset(struct net_device *ndev)
|
||||
{
|
||||
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);
|
||||
mdelay(3);
|
||||
ctrl_outl(ctrl_inl(ioaddr + EDMR) & ~EDMR_SRST, ioaddr + EDMR);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* free skb and descriptor buffer */
|
||||
|
@ -180,6 +206,7 @@ static void sh_eth_ring_free(struct net_device *ndev)
|
|||
/* format skb and descriptor buffer */
|
||||
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);
|
||||
int i;
|
||||
struct sk_buff *skb;
|
||||
|
@ -201,9 +228,15 @@ static void sh_eth_ring_format(struct net_device *ndev)
|
|||
mdp->rx_skbuff[i] = skb;
|
||||
if (skb == NULL)
|
||||
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);
|
||||
|
||||
#endif
|
||||
/* RX descriptor */
|
||||
rxdesc = &mdp->rx_ring[i];
|
||||
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. */
|
||||
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);
|
||||
|
||||
/* 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);
|
||||
|
||||
|
@ -226,8 +272,21 @@ static void sh_eth_ring_format(struct net_device *ndev)
|
|||
txdesc = &mdp->tx_ring[i];
|
||||
txdesc->status = cpu_to_le32(TD_TFP);
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -311,31 +370,43 @@ static int sh_eth_dev_init(struct net_device *ndev)
|
|||
/* Soft Reset */
|
||||
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 */
|
||||
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 */
|
||||
#endif
|
||||
|
||||
/* FIFO size set */
|
||||
ctrl_outl((FIFO_SIZE_T | FIFO_SIZE_R), ioaddr + FDR);
|
||||
ctrl_outl(0, ioaddr + TFTR);
|
||||
|
||||
/* Frame recv control */
|
||||
ctrl_outl(0, ioaddr + RMCR);
|
||||
|
||||
rx_int_var = mdp->rx_int_var = DESC_I_RINT8 | DESC_I_RINT5;
|
||||
tx_int_var = mdp->tx_int_var = DESC_I_TINT2;
|
||||
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);
|
||||
|
||||
#if !defined(CONFIG_CPU_SUBTYPE_SH7763)
|
||||
ctrl_outl(0, ioaddr + TRIMD);
|
||||
#endif
|
||||
|
||||
/* Descriptor format */
|
||||
sh_eth_ring_format(ndev);
|
||||
|
||||
ctrl_outl((u32)mdp->rx_ring, ioaddr + RDLAR);
|
||||
ctrl_outl((u32)mdp->tx_ring, ioaddr + TDLAR);
|
||||
/* Recv frame limit set register */
|
||||
ctrl_outl(RFLR_VALUE, ioaddr + RFLR);
|
||||
|
||||
ctrl_outl(ctrl_inl(ioaddr + EESR), ioaddr + EESR);
|
||||
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;
|
||||
|
||||
ctrl_outl(val, ioaddr + ECMR);
|
||||
ctrl_outl(ECSR_BRCRX | ECSR_PSRTO | ECSR_LCHNG | ECSR_ICD |
|
||||
ECSIPR_MPDIP, ioaddr + ECSR);
|
||||
ctrl_outl(ECSIPR_BRCRXIP | ECSIPR_PSRTOIP | ECSIPR_LCHNGIP |
|
||||
ECSIPR_ICDIP | ECSIPR_MPDIP, ioaddr + ECSIPR);
|
||||
|
||||
/* E-MAC Status Register clear */
|
||||
ctrl_outl(ECSR_INIT, ioaddr + ECSR);
|
||||
|
||||
/* E-MAC Interrupt Enable register */
|
||||
ctrl_outl(ECSIPR_INIT, ioaddr + ECSIPR);
|
||||
|
||||
/* Set MAC address */
|
||||
update_mac_address(ndev);
|
||||
|
||||
/* 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(MPR_MP, ioaddr + MPR);
|
||||
ctrl_outl(TPAUSER_UNLIMITED, ioaddr + TPAUSER);
|
||||
#endif
|
||||
#if defined(CONFIG_CPU_SUBTYPE_SH7710)
|
||||
ctrl_outl(BCFR_UNLIMITED, ioaddr + BCFR);
|
||||
#endif
|
||||
|
||||
/* Setting the Rx mode will start the Rx process. */
|
||||
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;
|
||||
struct sk_buff *skb;
|
||||
u16 pkt_len = 0;
|
||||
u32 desc_status;
|
||||
u32 desc_status, reserve = 0;
|
||||
|
||||
rxdesc = &mdp->rx_ring[entry];
|
||||
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++) {
|
||||
entry = mdp->dirty_rx % RX_RING_SIZE;
|
||||
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) {
|
||||
skb = dev_alloc_skb(mdp->rx_buf_sz);
|
||||
mdp->rx_skbuff[entry] = skb;
|
||||
if (skb == NULL)
|
||||
break; /* Better luck next round. */
|
||||
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);
|
||||
#endif
|
||||
skb->ip_summed = CHECKSUM_NONE;
|
||||
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)
|
||||
rxdesc->status |=
|
||||
cpu_to_le32(RD_RACT | RD_RFP | RC_RDEL);
|
||||
cpu_to_le32(RD_RACT | RD_RFP | RD_RDEL);
|
||||
else
|
||||
rxdesc->status |=
|
||||
cpu_to_le32(RD_RACT | RD_RFP);
|
||||
cpu_to_le32(RD_RACT | RD_RFP);
|
||||
}
|
||||
|
||||
/* Restart Rx engine if stopped. */
|
||||
/* 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;
|
||||
}
|
||||
|
@ -529,13 +615,14 @@ static void sh_eth_error(struct net_device *ndev, int intr_status)
|
|||
printk(KERN_ERR "Receive Frame Overflow\n");
|
||||
}
|
||||
}
|
||||
|
||||
#if !defined(CONFIG_CPU_SUBTYPE_SH7763)
|
||||
if (intr_status & EESR_ADE) {
|
||||
if (intr_status & EESR_TDE) {
|
||||
if (intr_status & EESR_TFE)
|
||||
mdp->stats.tx_fifo_errors++;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (intr_status & EESR_RDE) {
|
||||
/* 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++;
|
||||
printk(KERN_ERR "Receive FIFO Overflow\n");
|
||||
}
|
||||
if (intr_status &
|
||||
(EESR_TWB | EESR_TABT | EESR_ADE | EESR_TDE | EESR_TFE)) {
|
||||
if (intr_status & (EESR_TWB | EESR_TABT |
|
||||
#if !defined(CONFIG_CPU_SUBTYPE_SH7763)
|
||||
EESR_ADE |
|
||||
#endif
|
||||
EESR_TDE | EESR_TFE)) {
|
||||
/* Tx error */
|
||||
u32 edtrr = ctrl_inl(ndev->base_addr + EDTRR);
|
||||
/* dmesg */
|
||||
|
@ -582,17 +672,23 @@ static irqreturn_t sh_eth_interrupt(int irq, void *netdev)
|
|||
ioaddr = ndev->base_addr;
|
||||
spin_lock(&mdp->lock);
|
||||
|
||||
/* Get interrpt stat */
|
||||
intr_status = ctrl_inl(ioaddr + EESR);
|
||||
/* Clear interrupt */
|
||||
ctrl_outl(intr_status, ioaddr + EESR);
|
||||
|
||||
if (intr_status & (EESR_FRC | EESR_RINT8 |
|
||||
EESR_RINT5 | EESR_RINT4 | EESR_RINT3 | EESR_RINT2 |
|
||||
EESR_RINT1))
|
||||
if (intr_status & (EESR_FRC | /* Frame recv*/
|
||||
EESR_RMAF | /* Multi cast address recv*/
|
||||
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);
|
||||
if (intr_status & (EESR_FTC |
|
||||
EESR_TINT4 | EESR_TINT3 | EESR_TINT2 | EESR_TINT1)) {
|
||||
}
|
||||
|
||||
/* Tx Check */
|
||||
if (intr_status & TX_CHECK) {
|
||||
sh_eth_txfree(ndev);
|
||||
netif_wake_queue(ndev);
|
||||
}
|
||||
|
@ -631,11 +727,32 @@ static void sh_eth_adjust_link(struct net_device *ndev)
|
|||
if (phydev->duplex != mdp->duplex) {
|
||||
new_state = 1;
|
||||
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) {
|
||||
new_state = 1;
|
||||
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) {
|
||||
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. */
|
||||
init_timer(&mdp->timer);
|
||||
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;
|
||||
|
||||
|
@ -820,7 +937,9 @@ static int sh_eth_start_xmit(struct sk_buff *skb, struct net_device *ndev)
|
|||
|
||||
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;
|
||||
|
||||
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) */
|
||||
mdp->stats.tx_carrier_errors += ctrl_inl(ioaddr + LCCR);
|
||||
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);
|
||||
ctrl_outl(0, ioaddr + CNDCR); /* (write clear) */
|
||||
|
||||
#endif
|
||||
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_FWSL1);
|
||||
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_QTAGM1); /* Disable QTAG(1->0) */
|
||||
#endif
|
||||
ctrl_outl(0, ioaddr + TSU_FWSR); /* all interrupt status clear */
|
||||
ctrl_outl(0, ioaddr + TSU_FWINMK); /* Disable all interrupt */
|
||||
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 */
|
||||
if (!devno) {
|
||||
/* reset device */
|
||||
ctrl_outl(ARSTR_ARSTR, ndev->base_addr + ARSTR);
|
||||
ctrl_outl(ARSTR_ARSTR, ARSTR);
|
||||
mdelay(1);
|
||||
|
||||
/* 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);
|
||||
|
||||
for (i = 0; i < 5; i++)
|
||||
printk(KERN_INFO "%2.2x:", ndev->dev_addr[i]);
|
||||
printk(KERN_INFO "%2.2x, IRQ %d.\n", ndev->dev_addr[i], ndev->irq);
|
||||
printk(KERN_INFO "%02X:", ndev->dev_addr[i]);
|
||||
printk(KERN_INFO "%02X, IRQ %d.\n", ndev->dev_addr[i], ndev->irq);
|
||||
|
||||
platform_set_drvdata(pdev, ndev);
|
||||
|
||||
|
|
|
@ -32,118 +32,249 @@
|
|||
|
||||
#define CARDNAME "sh-eth"
|
||||
#define TX_TIMEOUT (5*HZ)
|
||||
|
||||
#define TX_RING_SIZE 128 /* Tx ring size */
|
||||
#define RX_RING_SIZE 128 /* Rx ring size */
|
||||
#define RX_OFFSET 2 /* skb offset */
|
||||
#define TX_RING_SIZE 64 /* Tx ring size */
|
||||
#define RX_RING_SIZE 64 /* Rx ring size */
|
||||
#define ETHERSMALL 60
|
||||
#define PKT_BUF_SZ 1538
|
||||
|
||||
#ifdef CONFIG_CPU_SUBTYPE_SH7763
|
||||
|
||||
#define SH7763_SKB_ALIGN 32
|
||||
/* Chip Base Address */
|
||||
#define SH_TSU_ADDR 0xA7000804
|
||||
# define SH_TSU_ADDR 0xFFE01800
|
||||
# define ARSTR 0xFFE01800
|
||||
|
||||
/* 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 */
|
||||
# define EDSR 0x000
|
||||
# define EDMR 0x400
|
||||
# define EDTRR 0x408
|
||||
# define EDRRR 0x410
|
||||
# define EESR 0x428
|
||||
# define EESIPR 0x430
|
||||
# define TDLAR 0x010
|
||||
# define TDFAR 0x014
|
||||
# define TDFXR 0x018
|
||||
# define TDFFR 0x01C
|
||||
# define RDLAR 0x030
|
||||
# define RDFAR 0x034
|
||||
# define RDFXR 0x038
|
||||
# define RDFFR 0x03C
|
||||
# define TRSCER 0x438
|
||||
# define RMFCR 0x440
|
||||
# define TFTR 0x448
|
||||
# define FDR 0x450
|
||||
# define RMCR 0x458
|
||||
# define RPADIR 0x460
|
||||
# define FCFTR 0x468
|
||||
|
||||
#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 */
|
||||
#define TSU_CTRST 0x004
|
||||
#define TSU_FWEN0 0x010
|
||||
#define TSU_FWEN1 0x014
|
||||
#define TSU_FCM 0x018
|
||||
#define TSU_BSYSL0 0x020
|
||||
#define TSU_BSYSL1 0x024
|
||||
#define TSU_PRISL0 0x028
|
||||
#define TSU_PRISL1 0x02C
|
||||
#define TSU_FWSL0 0x030
|
||||
#define TSU_FWSL1 0x034
|
||||
#define TSU_FWSLC 0x038
|
||||
#define TSU_QTAGM0 0x040
|
||||
#define TSU_QTAGM1 0x044
|
||||
#define TSU_ADQT0 0x048
|
||||
#define TSU_ADQT1 0x04C
|
||||
#define TSU_FWSR 0x050
|
||||
#define TSU_FWINMK 0x054
|
||||
#define TSU_ADSBSY 0x060
|
||||
#define TSU_TEN 0x064
|
||||
#define TSU_POST1 0x070
|
||||
#define TSU_POST2 0x074
|
||||
#define TSU_POST3 0x078
|
||||
#define TSU_POST4 0x07C
|
||||
#define TXNLCR0 0x080
|
||||
#define TXALCR0 0x084
|
||||
#define RXNLCR0 0x088
|
||||
#define RXALCR0 0x08C
|
||||
#define FWNLCR0 0x090
|
||||
#define FWALCR0 0x094
|
||||
#define TXNLCR1 0x0A0
|
||||
#define TXALCR1 0x0A4
|
||||
#define RXNLCR1 0x0A8
|
||||
#define RXALCR1 0x0AC
|
||||
#define FWNLCR1 0x0B0
|
||||
#define FWALCR1 0x0B4
|
||||
# define TSU_CTRST 0x004
|
||||
# define TSU_FWEN0 0x010
|
||||
# define TSU_FWEN1 0x014
|
||||
# define TSU_FCM 0x018
|
||||
# define TSU_BSYSL0 0x020
|
||||
# define TSU_BSYSL1 0x024
|
||||
# define TSU_PRISL0 0x028
|
||||
# define TSU_PRISL1 0x02C
|
||||
# define TSU_FWSL0 0x030
|
||||
# define TSU_FWSL1 0x034
|
||||
# define TSU_FWSLC 0x038
|
||||
# define TSU_QTAGM0 0x040
|
||||
# define TSU_QTAGM1 0x044
|
||||
# define TSU_ADQT0 0x048
|
||||
# define TSU_ADQT1 0x04C
|
||||
# define TSU_FWSR 0x050
|
||||
# define TSU_FWINMK 0x054
|
||||
# define TSU_ADSBSY 0x060
|
||||
# define TSU_TEN 0x064
|
||||
# define TSU_POST1 0x070
|
||||
# define TSU_POST2 0x074
|
||||
# define TSU_POST3 0x078
|
||||
# define TSU_POST4 0x07C
|
||||
# define TXNLCR0 0x080
|
||||
# define TXALCR0 0x084
|
||||
# define RXNLCR0 0x088
|
||||
# define RXALCR0 0x08C
|
||||
# define FWNLCR0 0x090
|
||||
# define FWALCR0 0x094
|
||||
# define TXNLCR1 0x0A0
|
||||
# define TXALCR1 0x0A4
|
||||
# define RXNLCR1 0x0A8
|
||||
# define RXALCR1 0x0AC
|
||||
# define FWNLCR1 0x0B0
|
||||
# define FWALCR1 0x0B4
|
||||
|
||||
#define TSU_ADRH0 0x0100
|
||||
#define TSU_ADRL0 0x0104
|
||||
#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 */
|
||||
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 */
|
||||
enum DMAC_T_BIT {
|
||||
#ifdef CONFIG_CPU_SUBTYPE_SH7763
|
||||
EDTRR_TRNS = 0x03,
|
||||
#else
|
||||
EDTRR_TRNS = 0x01,
|
||||
#endif
|
||||
};
|
||||
|
||||
/* EDRRR*/
|
||||
|
@ -173,21 +304,47 @@ enum PHY_STATUS_BIT { PHY_ST_LINK = 0x01, };
|
|||
|
||||
/* EESR */
|
||||
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_ADE = 0x00800000, EESR_ECI = 0x00400000,
|
||||
EESR_FTC = 0x00200000, EESR_TDE = 0x00100000,
|
||||
EESR_TFE = 0x00080000, EESR_FRC = 0x00040000,
|
||||
EESR_RDE = 0x00020000, EESR_RFE = 0x00010000,
|
||||
EESR_TINT4 = 0x00000800, EESR_TINT3 = 0x00000400,
|
||||
EESR_TINT2 = 0x00000200, EESR_TINT1 = 0x00000100,
|
||||
EESR_RINT8 = 0x00000080, EESR_RINT5 = 0x00000010,
|
||||
EESR_RINT4 = 0x00000008, EESR_RINT3 = 0x00000004,
|
||||
EESR_RINT2 = 0x00000002, EESR_RINT1 = 0x00000001,
|
||||
#ifndef CONFIG_CPU_SUBTYPE_SH7763
|
||||
EESR_ADE = 0x00800000,
|
||||
#endif
|
||||
EESR_ECI = 0x00400000,
|
||||
EESR_FTC = 0x00200000, EESR_TDE = 0x00100000,
|
||||
EESR_TFE = 0x00080000, EESR_FRC = 0x00040000,
|
||||
EESR_RDE = 0x00020000, EESR_RFE = 0x00010000,
|
||||
#ifndef CONFIG_CPU_SUBTYPE_SH7763
|
||||
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)
|
||||
# define TX_ERROR_CEHCK (EESR_TWB | EESR_TABT | EESR_ADE | EESR_TDE | EESR_TFE)
|
||||
#endif
|
||||
|
||||
/* EESIPR */
|
||||
enum DMAC_IM_BIT {
|
||||
|
@ -207,8 +364,8 @@ enum DMAC_IM_BIT {
|
|||
|
||||
/* Receive descriptor bit */
|
||||
enum RD_STS_BIT {
|
||||
RD_RACT = 0x80000000, RC_RDEL = 0x40000000,
|
||||
RC_RFP1 = 0x20000000, RC_RFP0 = 0x10000000,
|
||||
RD_RACT = 0x80000000, RD_RDEL = 0x40000000,
|
||||
RD_RFP1 = 0x20000000, RD_RFP0 = 0x10000000,
|
||||
RD_RFE = 0x08000000, RD_RFS10 = 0x00000200,
|
||||
RD_RFS9 = 0x00000100, RD_RFS8 = 0x00000080,
|
||||
RD_RFS7 = 0x00000040, RD_RFS6 = 0x00000020,
|
||||
|
@ -216,9 +373,9 @@ enum RD_STS_BIT {
|
|||
RD_RFS3 = 0x00000004, RD_RFS2 = 0x00000002,
|
||||
RD_RFS1 = 0x00000001,
|
||||
};
|
||||
#define RDF1ST RC_RFP1
|
||||
#define RDFEND RC_RFP0
|
||||
#define RD_RFP (RC_RFP1|RC_RFP0)
|
||||
#define RDF1ST RD_RFP1
|
||||
#define RDFEND RD_RFP0
|
||||
#define RD_RFP (RD_RFP1|RD_RFP0)
|
||||
|
||||
/* FCFTR */
|
||||
enum FCFTR_BIT {
|
||||
|
@ -231,7 +388,8 @@ enum FCFTR_BIT {
|
|||
|
||||
/* Transfer descriptor 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,
|
||||
};
|
||||
#define TDF1ST TD_TFP1
|
||||
|
@ -242,6 +400,10 @@ enum TD_STS_BIT {
|
|||
enum RECV_RST_BIT { RMCR_RST = 0x01, };
|
||||
/* ECMR */
|
||||
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_TXF = 0x00010000, ECMR_MCT = 0x00002000, ECMR_PRCEF = 0x00001000,
|
||||
ECMR_PMDE = 0x00000200, ECMR_RE = 0x00000040, ECMR_TE = 0x00000020,
|
||||
|
@ -249,18 +411,45 @@ enum FELIC_MODE_BIT {
|
|||
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 */
|
||||
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,
|
||||
};
|
||||
|
||||
#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 */
|
||||
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,
|
||||
};
|
||||
|
||||
#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 */
|
||||
enum APR_BIT {
|
||||
APR_AP = 0x00000001,
|
||||
|
@ -285,6 +474,15 @@ enum RPADIR_BIT {
|
|||
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 */
|
||||
enum FIFO_SIZE_BIT {
|
||||
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_FCS = 0x0400, PHY_A_T4 = 0x0200, PHY_A_FDX = 0x0100,
|
||||
PHY_A_HDX = 0x0080, PHY_A_10FDX = 0x0040, PHY_A_10HDX = 0x0020,
|
||||
PHY_A_SEL = 0x001f,
|
||||
PHY_A_SEL = 0x001e,
|
||||
};
|
||||
/* PHY_ANL */
|
||||
enum PHY_ANL_BIT {
|
||||
|
@ -449,6 +647,10 @@ struct sh_eth_private {
|
|||
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)
|
||||
{
|
||||
#ifdef __LITTLE_ENDIAN__
|
||||
|
@ -460,5 +662,5 @@ static void swaps(char *src, int len)
|
|||
*p = swab32(*p);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* CONFIG_CPU_SUBTYPE_SH7763 */
|
||||
#endif
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "h/smc.h"
|
||||
#include "h/smt_p.h"
|
||||
#include <linux/bitrev.h>
|
||||
#include <linux/kernel.h>
|
||||
|
||||
#define KERNEL
|
||||
#include "h/smtstate.h"
|
||||
|
@ -1730,20 +1731,18 @@ void fddi_send_antc(struct s_smc *smc, struct fddi_addr *dest)
|
|||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#define hextoasc(x) "0123456789abcdef"[x]
|
||||
|
||||
char *addr_to_string(struct fddi_addr *addr)
|
||||
{
|
||||
int i ;
|
||||
static char string[6*3] = "****" ;
|
||||
|
||||
for (i = 0 ; i < 6 ; i++) {
|
||||
string[i*3] = hextoasc((addr->a[i]>>4)&0xf) ;
|
||||
string[i*3+1] = hextoasc((addr->a[i])&0xf) ;
|
||||
string[i*3+2] = ':' ;
|
||||
string[i * 3] = hex_asc_hi(addr->a[i]);
|
||||
string[i * 3 + 1] = hex_asc_lo(addr->a[i]);
|
||||
string[i * 3 + 2] = ':';
|
||||
}
|
||||
string[5*3+2] = 0 ;
|
||||
return(string) ;
|
||||
string[5 * 3 + 2] = 0;
|
||||
return(string);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
u32 misc_host_ctrl;
|
||||
u16 power_control, power_caps;
|
||||
int pm = tp->pm_cap;
|
||||
|
||||
/* Make sure register accesses (indirect or otherwise)
|
||||
* will function correctly.
|
||||
|
@ -1992,18 +1990,10 @@ static int tg3_set_power_state(struct tg3 *tp, pci_power_t state)
|
|||
TG3PCI_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) {
|
||||
case PCI_D0:
|
||||
power_control |= 0;
|
||||
pci_write_config_word(tp->pdev,
|
||||
pm + PCI_PM_CTRL,
|
||||
power_control);
|
||||
udelay(100); /* Delay after power state change */
|
||||
pci_enable_wake(tp->pdev, state, false);
|
||||
pci_set_power_state(tp->pdev, PCI_D0);
|
||||
|
||||
/* Switch out of Vaux if it is a 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;
|
||||
|
||||
case PCI_D1:
|
||||
power_control |= 1;
|
||||
break;
|
||||
|
||||
case PCI_D2:
|
||||
power_control |= 2;
|
||||
break;
|
||||
|
||||
case PCI_D3hot:
|
||||
power_control |= 3;
|
||||
break;
|
||||
|
||||
default:
|
||||
printk(KERN_WARNING PFX "%s: Invalid power state (%d) "
|
||||
"requested.\n",
|
||||
tp->dev->name, state);
|
||||
printk(KERN_ERR PFX "%s: Invalid power state (D%d) requested\n",
|
||||
tp->dev->name, state);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
power_control |= PCI_PM_CTRL_PME_ENABLE;
|
||||
|
||||
misc_host_ctrl = tr32(TG3PCI_MISC_HOST_CTRL);
|
||||
tw32(TG3PCI_MISC_HOST_CTRL,
|
||||
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_SET_MAGIC_PKT);
|
||||
|
||||
pci_read_config_word(tp->pdev, pm + PCI_PM_PMC, &power_caps);
|
||||
|
||||
if (tp->tg3_flags & TG3_FLAG_WOL_ENABLE) {
|
||||
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))
|
||||
tw32(MAC_LED_CTRL, tp->led_ctrl);
|
||||
|
||||
if (((power_caps & PCI_PM_CAP_PME_D3cold) &&
|
||||
(tp->tg3_flags & TG3_FLAG_WOL_ENABLE)))
|
||||
if (pci_pme_capable(tp->pdev, state) &&
|
||||
(tp->tg3_flags & TG3_FLAG_WOL_ENABLE))
|
||||
mac_mode |= MAC_MODE_MAGIC_PKT_ENABLE;
|
||||
|
||||
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);
|
||||
|
||||
if (tp->tg3_flags & TG3_FLAG_WOL_ENABLE)
|
||||
pci_enable_wake(tp->pdev, state, true);
|
||||
|
||||
/* Finally, set the new power state. */
|
||||
pci_write_config_word(tp->pdev, pm + PCI_PM_CTRL, power_control);
|
||||
udelay(100); /* Delay after power state change */
|
||||
pci_set_power_state(tp->pdev, state);
|
||||
|
||||
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);
|
||||
|
||||
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;
|
||||
else
|
||||
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)
|
||||
{
|
||||
struct tg3 *tp = netdev_priv(dev);
|
||||
struct device *dp = &tp->pdev->dev;
|
||||
|
||||
if (wol->wolopts & ~WAKE_MAGIC)
|
||||
return -EINVAL;
|
||||
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;
|
||||
|
||||
spin_lock_bh(&tp->lock);
|
||||
if (wol->wolopts & WAKE_MAGIC)
|
||||
if (wol->wolopts & WAKE_MAGIC) {
|
||||
tp->tg3_flags |= TG3_FLAG_WOL_ENABLE;
|
||||
else
|
||||
device_set_wakeup_enable(dp, true);
|
||||
} else {
|
||||
tp->tg3_flags &= ~TG3_FLAG_WOL_ENABLE;
|
||||
device_set_wakeup_enable(dp, false);
|
||||
}
|
||||
spin_unlock_bh(&tp->lock);
|
||||
|
||||
return 0;
|
||||
|
@ -11296,7 +11280,8 @@ static void __devinit tg3_get_eeprom_hw_cfg(struct tg3 *tp)
|
|||
if (val & VCPU_CFGSHDW_ASPM_DBNC)
|
||||
tp->tg3_flags |= TG3_FLAG_ASPM_WORKAROUND;
|
||||
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;
|
||||
return;
|
||||
}
|
||||
|
@ -11426,8 +11411,9 @@ static void __devinit tg3_get_eeprom_hw_cfg(struct tg3 *tp)
|
|||
!(nic_cfg & NIC_SRAM_DATA_CFG_FIBER_WOL))
|
||||
tp->tg3_flags &= ~TG3_FLAG_WOL_CAP;
|
||||
|
||||
if (tp->tg3_flags & TG3_FLAG_WOL_CAP &&
|
||||
nic_cfg & NIC_SRAM_DATA_CFG_WOL_ENABLE)
|
||||
if ((tp->tg3_flags & TG3_FLAG_WOL_CAP) &&
|
||||
(nic_cfg & NIC_SRAM_DATA_CFG_WOL_ENABLE) &&
|
||||
device_may_wakeup(&tp->pdev->dev))
|
||||
tp->tg3_flags |= TG3_FLAG_WOL_ENABLE;
|
||||
|
||||
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 tg3 *tp = netdev_priv(dev);
|
||||
pci_power_t target_state;
|
||||
int err;
|
||||
|
||||
/* 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;
|
||||
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) {
|
||||
int err2;
|
||||
|
||||
|
|
|
@ -55,12 +55,28 @@
|
|||
|
||||
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);
|
||||
return usb_control_msg(dev->udev,
|
||||
usb_rcvctrlpipe(dev->udev, 0),
|
||||
DM_READ_REGS,
|
||||
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
|
||||
0, reg, data, length, USB_CTRL_SET_TIMEOUT);
|
||||
|
||||
buf = kmalloc(length, GFP_KERNEL);
|
||||
if (!buf)
|
||||
goto out;
|
||||
|
||||
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)
|
||||
|
@ -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)
|
||||
{
|
||||
void *buf = NULL;
|
||||
int err = -ENOMEM;
|
||||
|
||||
devdbg(dev, "dm_write() reg=0x%02x, length=%d", reg, length);
|
||||
return usb_control_msg(dev->udev,
|
||||
usb_sndctrlpipe(dev->udev, 0),
|
||||
DM_WRITE_REGS,
|
||||
USB_DIR_OUT | USB_TYPE_VENDOR |USB_RECIP_DEVICE,
|
||||
0, reg, data, length, USB_CTRL_SET_TIMEOUT);
|
||||
|
||||
if (data) {
|
||||
buf = kmalloc(length, GFP_KERNEL);
|
||||
if (!buf)
|
||||
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)
|
||||
|
|
|
@ -337,7 +337,7 @@ static int __init wd_probe1(struct net_device *dev, int ioaddr)
|
|||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
dev->poll_controller = ei_poll;
|
||||
#endif
|
||||
NS8390_init(dev, 0);
|
||||
NS8390p_init(dev, 0);
|
||||
|
||||
#if 1
|
||||
/* Enable interrupt generation on softconfig cards -- M.U */
|
||||
|
|
|
@ -97,6 +97,7 @@ header-y += ioctl.h
|
|||
header-y += ip6_tunnel.h
|
||||
header-y += ipmi_msgdefs.h
|
||||
header-y += ipsec.h
|
||||
header-y += ip_vs.h
|
||||
header-y += ipx.h
|
||||
header-y += irda.h
|
||||
header-y += iso_fs.h
|
||||
|
|
245
include/linux/ip_vs.h
Normal file
245
include/linux/ip_vs.h
Normal 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 */
|
|
@ -440,6 +440,7 @@ static inline void napi_synchronize(const struct napi_struct *n)
|
|||
enum netdev_queue_state_t
|
||||
{
|
||||
__QUEUE_STATE_XOFF,
|
||||
__QUEUE_STATE_FROZEN,
|
||||
};
|
||||
|
||||
struct netdev_queue {
|
||||
|
@ -636,7 +637,7 @@ struct net_device
|
|||
unsigned int real_num_tx_queues;
|
||||
|
||||
unsigned long tx_queue_len; /* Max frames per queue allowed */
|
||||
|
||||
spinlock_t tx_global_lock;
|
||||
/*
|
||||
* 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));
|
||||
}
|
||||
|
||||
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
|
||||
* @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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
int ok = spin_trylock(&txq->_xmit_lock);
|
||||
|
@ -1507,11 +1489,6 @@ static inline int __netif_tx_trylock(struct netdev_queue *txq)
|
|||
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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < dev->num_tx_queues; 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)
|
||||
|
@ -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)
|
||||
{
|
||||
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++) {
|
||||
struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
|
||||
|
||||
__netif_tx_lock(txq, cpu);
|
||||
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)
|
||||
|
|
|
@ -30,6 +30,9 @@ enum tcp_conntrack {
|
|||
/* Be liberal in window checking */
|
||||
#define IP_CT_TCP_FLAG_BE_LIBERAL 0x08
|
||||
|
||||
/* Has unacknowledged data */
|
||||
#define IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED 0x10
|
||||
|
||||
struct nf_ct_tcp_flags {
|
||||
u_int8_t flags;
|
||||
u_int8_t mask;
|
||||
|
|
|
@ -243,6 +243,7 @@ typedef unsigned char *sk_buff_data_t;
|
|||
* @tc_index: Traffic control index
|
||||
* @tc_verd: traffic control verdict
|
||||
* @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
|
||||
* done by skb DMA functions
|
||||
* @secmark: security marking
|
||||
|
|
|
@ -3,254 +3,17 @@
|
|||
* data structure and functionality definitions
|
||||
*/
|
||||
|
||||
#ifndef _IP_VS_H
|
||||
#define _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;
|
||||
};
|
||||
#ifndef _NET_IP_VS_H
|
||||
#define _NET_IP_VS_H
|
||||
|
||||
#include <linux/ip_vs.h> /* definitions shared with userland */
|
||||
|
||||
/* old ipvsadm versions still include this file directly */
|
||||
#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/spinlock.h> /* for struct rwlock_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 /* _IP_VS_H */
|
||||
#endif /* _NET_IP_VS_H */
|
||||
|
|
|
@ -56,23 +56,12 @@ static u32 __random32(struct rnd_state *state)
|
|||
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)
|
||||
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);
|
||||
return (x < m) ? x + m : x;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -107,7 +96,7 @@ void srandom32(u32 entropy)
|
|||
*/
|
||||
for_each_possible_cpu (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);
|
||||
|
@ -122,7 +111,19 @@ static int __init random32_init(void)
|
|||
|
||||
for_each_possible_cpu(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;
|
||||
}
|
||||
|
@ -135,13 +136,18 @@ core_initcall(random32_init);
|
|||
static int __init random32_reseed(void)
|
||||
{
|
||||
int i;
|
||||
unsigned long seed;
|
||||
|
||||
for_each_possible_cpu(i) {
|
||||
struct rnd_state *state = &per_cpu(net_rand_state,i);
|
||||
u32 seeds[3];
|
||||
|
||||
get_random_bytes(&seed, sizeof(seed));
|
||||
__set_random32(state, seed);
|
||||
get_random_bytes(&seeds, sizeof(seeds));
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -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_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,
|
||||
uint8_t *tlvs, uint8_t mps_macs, uint8_t device_type);
|
||||
static const uint8_t *copy_macs(struct mpoa_client *mpc,
|
||||
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 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 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.
|
||||
*
|
||||
*/
|
||||
static void lane2_assoc_ind(struct net_device *dev, uint8_t *mac_addr,
|
||||
uint8_t *tlvs, uint32_t sizeoftlvs)
|
||||
static void lane2_assoc_ind(struct net_device *dev, const u8 *mac_addr,
|
||||
const u8 *tlvs, u32 sizeoftlvs)
|
||||
{
|
||||
uint32_t type;
|
||||
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;
|
||||
|
||||
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.
|
||||
* For a freshly allocated MPOA client mpc->mps_macs == 0.
|
||||
*/
|
||||
static uint8_t *copy_macs(struct mpoa_client *mpc, uint8_t *router_mac,
|
||||
uint8_t *tlvs, uint8_t mps_macs, uint8_t device_type)
|
||||
static const uint8_t *copy_macs(struct mpoa_client *mpc,
|
||||
const uint8_t *router_mac,
|
||||
const uint8_t *tlvs, uint8_t mps_macs,
|
||||
uint8_t device_type)
|
||||
{
|
||||
int num_macs;
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
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;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -202,6 +202,9 @@ static struct net_device *new_bridge_dev(const char *name)
|
|||
br->topology_change = 0;
|
||||
br->topology_change_detected = 0;
|
||||
br->ageing_time = 300 * HZ;
|
||||
|
||||
br_netfilter_rtable_init(br);
|
||||
|
||||
INIT_LIST_HEAD(&br->age_list);
|
||||
|
||||
br_stp_timer_init(br);
|
||||
|
|
|
@ -101,33 +101,30 @@ static inline __be16 pppoe_proto(const struct sk_buff *skb)
|
|||
pppoe_proto(skb) == htons(PPP_IPV6) && \
|
||||
brnf_filter_pppoe_tagged)
|
||||
|
||||
/* We need these fake structures to make netfilter happy --
|
||||
* lots of places assume that skb->dst != NULL, which isn't
|
||||
* all that unreasonable.
|
||||
*
|
||||
/*
|
||||
* Initialize bogus route table used to keep netfilter happy.
|
||||
* Currently, we fill in the PMTU entry because netfilter
|
||||
* refragmentation needs it, and the rt_flags entry because
|
||||
* ipt_REJECT needs it. Future netfilter modules might
|
||||
* require us to fill additional fields. */
|
||||
static struct net_device __fake_net_device = {
|
||||
.hard_header_len = ETH_HLEN,
|
||||
#ifdef CONFIG_NET_NS
|
||||
.nd_net = &init_net,
|
||||
#endif
|
||||
};
|
||||
* require us to fill additional fields.
|
||||
*/
|
||||
void br_netfilter_rtable_init(struct net_bridge *br)
|
||||
{
|
||||
struct rtable *rt = &br->fake_rtable;
|
||||
|
||||
static struct rtable __fake_rtable = {
|
||||
.u = {
|
||||
.dst = {
|
||||
.__refcnt = ATOMIC_INIT(1),
|
||||
.dev = &__fake_net_device,
|
||||
.path = &__fake_rtable.u.dst,
|
||||
.metrics = {[RTAX_MTU - 1] = 1500},
|
||||
.flags = DST_NOXFRM,
|
||||
}
|
||||
},
|
||||
.rt_flags = 0,
|
||||
};
|
||||
atomic_set(&rt->u.dst.__refcnt, 1);
|
||||
rt->u.dst.dev = &br->dev;
|
||||
rt->u.dst.path = &rt->u.dst;
|
||||
rt->u.dst.metrics[RTAX_MTU - 1] = 1500;
|
||||
rt->u.dst.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);
|
||||
|
||||
return port ? &port->br->fake_rtable : NULL;
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
skb->rtable = &__fake_rtable;
|
||||
dst_hold(&__fake_rtable.u.dst);
|
||||
skb->rtable = bridge_parent_rtable(nf_bridge->physindev);
|
||||
if (!skb->rtable) {
|
||||
kfree_skb(skb);
|
||||
return 0;
|
||||
}
|
||||
dst_hold(&skb->rtable->u.dst);
|
||||
|
||||
skb->dev = nf_bridge->physindev;
|
||||
nf_bridge_push_encap_header(skb);
|
||||
|
@ -391,8 +392,12 @@ bridged_dnat:
|
|||
skb->pkt_type = PACKET_HOST;
|
||||
}
|
||||
} else {
|
||||
skb->rtable = &__fake_rtable;
|
||||
dst_hold(&__fake_rtable.u.dst);
|
||||
skb->rtable = bridge_parent_rtable(nf_bridge->physindev);
|
||||
if (!skb->rtable) {
|
||||
kfree_skb(skb);
|
||||
return 0;
|
||||
}
|
||||
dst_hold(&skb->rtable->u.dst);
|
||||
}
|
||||
|
||||
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,
|
||||
int (*okfn)(struct sk_buff *))
|
||||
{
|
||||
if (skb->rtable == &__fake_rtable) {
|
||||
dst_release(&__fake_rtable.u.dst);
|
||||
if (skb->rtable && skb->rtable == bridge_parent_rtable(in)) {
|
||||
dst_release(&skb->rtable->u.dst);
|
||||
skb->rtable = NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/if_bridge.h>
|
||||
#include <net/route.h>
|
||||
|
||||
#define BR_HASH_BITS 8
|
||||
#define BR_HASH_SIZE (1 << BR_HASH_BITS)
|
||||
|
@ -92,6 +93,9 @@ struct net_bridge
|
|||
struct hlist_head hash[BR_HASH_SIZE];
|
||||
struct list_head age_list;
|
||||
unsigned long feature_mask;
|
||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||
struct rtable fake_rtable;
|
||||
#endif
|
||||
unsigned long flags;
|
||||
#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
|
||||
extern int br_netfilter_init(void);
|
||||
extern void br_netfilter_fini(void);
|
||||
extern void br_netfilter_rtable_init(struct net_bridge *);
|
||||
#else
|
||||
#define br_netfilter_init() (0)
|
||||
#define br_netfilter_fini() do { } while(0)
|
||||
#define br_netfilter_rtable_init(x)
|
||||
#endif
|
||||
|
||||
/* br_stp.c */
|
||||
|
|
|
@ -4200,6 +4200,7 @@ static void netdev_init_queues(struct net_device *dev)
|
|||
{
|
||||
netdev_init_one_queue(dev, &dev->rx_queue, NULL);
|
||||
netdev_for_each_tx_queue(dev, netdev_init_one_queue, NULL);
|
||||
spin_lock_init(&dev->tx_global_lock);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -70,6 +70,7 @@ static void queue_process(struct work_struct *work)
|
|||
local_irq_save(flags);
|
||||
__netif_tx_lock(txq, smp_processor_id());
|
||||
if (netif_tx_queue_stopped(txq) ||
|
||||
netif_tx_queue_frozen(txq) ||
|
||||
dev->hard_start_xmit(skb, dev) != NETDEV_TX_OK) {
|
||||
skb_queue_head(&npinfo->txq, skb);
|
||||
__netif_tx_unlock(txq);
|
||||
|
|
|
@ -3305,6 +3305,7 @@ static __inline__ void pktgen_xmit(struct pktgen_dev *pkt_dev)
|
|||
|
||||
txq = netdev_get_tx_queue(odev, queue_map);
|
||||
if (netif_tx_queue_stopped(txq) ||
|
||||
netif_tx_queue_frozen(txq) ||
|
||||
need_resched()) {
|
||||
idle_start = getCurUs();
|
||||
|
||||
|
@ -3320,7 +3321,8 @@ static __inline__ void pktgen_xmit(struct pktgen_dev *pkt_dev)
|
|||
|
||||
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_ns = 0;
|
||||
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);
|
||||
|
||||
__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));
|
||||
retry_now:
|
||||
|
|
|
@ -475,11 +475,10 @@ static void arp_print(struct arp_payload *payload)
|
|||
#define HBUFFERLEN 30
|
||||
char hbuffer[HBUFFERLEN];
|
||||
int j,k;
|
||||
const char hexbuf[]= "0123456789abcdef";
|
||||
|
||||
for (k=0, j=0; k < HBUFFERLEN-3 && j < ETH_ALEN; j++) {
|
||||
hbuffer[k++]=hexbuf[(payload->src_hw[j]>>4)&15];
|
||||
hbuffer[k++]=hexbuf[payload->src_hw[j]&15];
|
||||
hbuffer[k++] = hex_asc_hi(payload->src_hw[j]);
|
||||
hbuffer[k++] = hex_asc_lo(payload->src_hw[j]);
|
||||
hbuffer[k++]=':';
|
||||
}
|
||||
hbuffer[--k]='\0';
|
||||
|
|
|
@ -305,10 +305,10 @@ static void recent_mt_destroy(const struct xt_match *match, void *matchinfo)
|
|||
spin_lock_bh(&recent_lock);
|
||||
list_del(&t->list);
|
||||
spin_unlock_bh(&recent_lock);
|
||||
recent_table_flush(t);
|
||||
#ifdef CONFIG_PROC_FS
|
||||
remove_proc_entry(t->name, proc_dir);
|
||||
#endif
|
||||
recent_table_flush(t);
|
||||
kfree(t);
|
||||
}
|
||||
mutex_unlock(&recent_mutex);
|
||||
|
|
|
@ -3223,7 +3223,9 @@ int __init ip_rt_init(void)
|
|||
*/
|
||||
void __init ip_static_sysctl_init(void)
|
||||
{
|
||||
#ifdef CONFIG_SYSCTL
|
||||
register_sysctl_paths(ipv4_route_path, ipv4_route_table);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
tcp_v4_md5_hash_hdr((__u8 *) &rep.opt[offset],
|
||||
key, ip_hdr(skb)->daddr,
|
||||
ip_hdr(skb)->saddr, &rep.th);
|
||||
key, ip_hdr(skb)->saddr,
|
||||
ip_hdr(skb)->daddr, &rep.th);
|
||||
}
|
||||
#endif
|
||||
arg.csum = csum_tcpudp_nofold(ip_hdr(skb)->daddr,
|
||||
|
|
|
@ -236,6 +236,10 @@ int ip6_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl,
|
|||
skb_reset_network_header(skb);
|
||||
hdr = ipv6_hdr(skb);
|
||||
|
||||
/* Allow local fragmentation. */
|
||||
if (ipfragok)
|
||||
skb->local_df = 1;
|
||||
|
||||
/*
|
||||
* Fill in the IPv6 header
|
||||
*/
|
||||
|
|
|
@ -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->daddr, daddr);
|
||||
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));
|
||||
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) |
|
||||
(TCPOPT_MD5SIG << 8) | TCPOLEN_MD5SIG);
|
||||
tcp_v6_md5_hash_hdr((__u8 *)topt, key,
|
||||
&ipv6_hdr(skb)->daddr,
|
||||
&ipv6_hdr(skb)->saddr, t1);
|
||||
&ipv6_hdr(skb)->saddr,
|
||||
&ipv6_hdr(skb)->daddr, t1);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -67,7 +67,8 @@ static const char *const tcp_conntrack_names[] = {
|
|||
/* RFC1122 says the R2 limit should be at least 100 seconds.
|
||||
Linux uses 15 packets as limit, which corresponds
|
||||
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 = {
|
||||
[TCP_CONNTRACK_SYN_SENT] = 2 MINS,
|
||||
|
@ -625,8 +626,10 @@ static bool tcp_in_window(const struct nf_conn *ct,
|
|||
swin = win + (sack - ack);
|
||||
if (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->flags |= IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED;
|
||||
}
|
||||
/*
|
||||
* Update receiver data.
|
||||
*/
|
||||
|
@ -637,6 +640,8 @@ static bool tcp_in_window(const struct nf_conn *ct,
|
|||
if (win == 0)
|
||||
receiver->td_maxend++;
|
||||
}
|
||||
if (ack == receiver->td_end)
|
||||
receiver->flags &= ~IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED;
|
||||
|
||||
/*
|
||||
* Check retransmissions.
|
||||
|
@ -951,9 +956,16 @@ static int tcp_packet(struct nf_conn *ct,
|
|||
if (old_state != new_state
|
||||
&& new_state == TCP_CONNTRACK_FIN_WAIT)
|
||||
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
|
||||
? nf_ct_tcp_timeout_max_retrans : tcp_timeouts[new_state];
|
||||
|
||||
if (ct->proto.tcp.retrans >= nf_ct_tcp_max_retrans &&
|
||||
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);
|
||||
|
||||
nf_conntrack_event_cache(IPCT_PROTOINFO_VOLATILE, skb);
|
||||
|
@ -1235,6 +1247,13 @@ static struct ctl_table tcp_sysctl_table[] = {
|
|||
.mode = 0644,
|
||||
.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,
|
||||
.procname = "nf_conntrack_tcp_loose",
|
||||
|
|
|
@ -367,9 +367,7 @@ static void htable_gc(unsigned long htlong)
|
|||
|
||||
static void htable_destroy(struct xt_hashlimit_htable *hinfo)
|
||||
{
|
||||
/* remove timer, if it is pending */
|
||||
if (timer_pending(&hinfo->timer))
|
||||
del_timer(&hinfo->timer);
|
||||
del_timer_sync(&hinfo->timer);
|
||||
|
||||
/* remove proc entry */
|
||||
remove_proc_entry(hinfo->pde->name,
|
||||
|
|
|
@ -135,7 +135,8 @@ static inline int qdisc_restart(struct Qdisc *q)
|
|||
txq = netdev_get_tx_queue(dev, skb_get_queue_mapping(skb));
|
||||
|
||||
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);
|
||||
HARD_TX_UNLOCK(dev, txq);
|
||||
|
||||
|
@ -162,7 +163,8 @@ static inline int qdisc_restart(struct Qdisc *q)
|
|||
break;
|
||||
}
|
||||
|
||||
if (ret && netif_tx_queue_stopped(txq))
|
||||
if (ret && (netif_tx_queue_stopped(txq) ||
|
||||
netif_tx_queue_frozen(txq)))
|
||||
ret = 0;
|
||||
|
||||
return ret;
|
||||
|
|
|
@ -305,10 +305,11 @@ restart:
|
|||
|
||||
switch (teql_resolve(skb, skb_res, slave)) {
|
||||
case 0:
|
||||
if (netif_tx_trylock(slave)) {
|
||||
if (!__netif_subqueue_stopped(slave, subq) &&
|
||||
if (__netif_tx_trylock(slave_txq)) {
|
||||
if (!netif_tx_queue_stopped(slave_txq) &&
|
||||
!netif_tx_queue_frozen(slave_txq) &&
|
||||
slave->hard_start_xmit(skb, slave) == 0) {
|
||||
netif_tx_unlock(slave);
|
||||
__netif_tx_unlock(slave_txq);
|
||||
master->slaves = NEXT_SLAVE(q);
|
||||
netif_wake_queue(dev);
|
||||
master->stats.tx_packets++;
|
||||
|
@ -316,7 +317,7 @@ restart:
|
|||
qdisc_pkt_len(skb);
|
||||
return 0;
|
||||
}
|
||||
netif_tx_unlock(slave);
|
||||
__netif_tx_unlock(slave_txq);
|
||||
}
|
||||
if (netif_queue_stopped(dev))
|
||||
busy = 1;
|
||||
|
|
Loading…
Reference in a new issue