mirror of
https://github.com/torvalds/linux.git
synced 2024-10-30 08:42:47 +00:00
Merge branch 'core/resources' into x86/core
This commit is contained in:
commit
8040d77688
@ -116,6 +116,11 @@ ifeq ($(CONFIG_6xx),y)
|
||||
KBUILD_CFLAGS += -mcpu=powerpc
|
||||
endif
|
||||
|
||||
# Work around a gcc code-gen bug with -fno-omit-frame-pointer.
|
||||
ifeq ($(CONFIG_FTRACE),y)
|
||||
KBUILD_CFLAGS += -mno-sched-epilog
|
||||
endif
|
||||
|
||||
cpu-as-$(CONFIG_4xx) += -Wa,-m405
|
||||
cpu-as-$(CONFIG_6xx) += -Wa,-maltivec
|
||||
cpu-as-$(CONFIG_POWER4) += -Wa,-maltivec
|
||||
|
@ -153,12 +153,10 @@
|
||||
#define __S110 PAGE_SHARED_X
|
||||
#define __S111 PAGE_SHARED_X
|
||||
|
||||
#ifdef CONFIG_HUGETLB_PAGE
|
||||
|
||||
#ifdef CONFIG_PPC_MM_SLICES
|
||||
#define HAVE_ARCH_UNMAPPED_AREA
|
||||
#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
|
||||
|
||||
#endif
|
||||
#endif /* CONFIG_PPC_MM_SLICES */
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
|
@ -14,12 +14,13 @@ endif
|
||||
|
||||
ifdef CONFIG_FTRACE
|
||||
# Do not trace early boot code
|
||||
CFLAGS_REMOVE_cputable.o = -pg
|
||||
CFLAGS_REMOVE_prom_init.o = -pg
|
||||
CFLAGS_REMOVE_cputable.o = -pg -mno-sched-epilog
|
||||
CFLAGS_REMOVE_prom_init.o = -pg -mno-sched-epilog
|
||||
CFLAGS_REMOVE_btext.o = -pg -mno-sched-epilog
|
||||
|
||||
ifdef CONFIG_DYNAMIC_FTRACE
|
||||
# dynamic ftrace setup.
|
||||
CFLAGS_REMOVE_ftrace.o = -pg
|
||||
CFLAGS_REMOVE_ftrace.o = -pg -mno-sched-epilog
|
||||
endif
|
||||
|
||||
endif
|
||||
|
@ -647,7 +647,7 @@ static int emulate_vsx(unsigned char __user *addr, unsigned int reg,
|
||||
unsigned int flags, unsigned int length)
|
||||
{
|
||||
char *ptr = (char *) ¤t->thread.TS_FPR(reg);
|
||||
int ret;
|
||||
int ret = 0;
|
||||
|
||||
flush_vsx_to_thread(current);
|
||||
|
||||
|
@ -158,7 +158,7 @@ _GLOBAL(power_save_ppc32_restore)
|
||||
stw r9,_NIP(r11) /* make it do a blr */
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
mfspr r12,SPRN_SPRG3
|
||||
rlwinm r12,r11,0,0,31-THREAD_SHIFT
|
||||
lwz r11,TI_CPU(r12) /* get cpu number * 4 */
|
||||
slwi r11,r11,2
|
||||
#else
|
||||
|
@ -84,10 +84,11 @@ _GLOBAL(power_save_ppc32_restore)
|
||||
stw r9,_NIP(r11) /* make it do a blr */
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
mfspr r12,SPRN_SPRG3
|
||||
rlwinm r12,r1,0,0,31-THREAD_SHIFT
|
||||
lwz r11,TI_CPU(r12) /* get cpu number * 4 */
|
||||
slwi r11,r11,2
|
||||
#else
|
||||
li r11,0
|
||||
#endif
|
||||
|
||||
b transfer_to_handler_cont
|
||||
|
@ -66,11 +66,12 @@ SECTIONS
|
||||
__got2_end = .;
|
||||
#endif /* CONFIG_PPC32 */
|
||||
|
||||
. = ALIGN(PAGE_SIZE);
|
||||
_etext = .;
|
||||
PROVIDE32 (etext = .);
|
||||
} :kernel
|
||||
|
||||
. = ALIGN(PAGE_SIZE);
|
||||
_etext = .;
|
||||
PROVIDE32 (etext = .);
|
||||
|
||||
/* Read-only data */
|
||||
RODATA
|
||||
|
||||
|
@ -191,12 +191,17 @@ int htab_bolt_mapping(unsigned long vstart, unsigned long vend,
|
||||
unsigned long hash, hpteg;
|
||||
unsigned long vsid = get_kernel_vsid(vaddr, ssize);
|
||||
unsigned long va = hpt_va(vaddr, vsid, ssize);
|
||||
unsigned long tprot = prot;
|
||||
|
||||
/* Make kernel text executable */
|
||||
if (in_kernel_text(vaddr))
|
||||
tprot &= ~HPTE_R_N;
|
||||
|
||||
hash = hpt_hash(va, shift, ssize);
|
||||
hpteg = ((hash & htab_hash_mask) * HPTES_PER_GROUP);
|
||||
|
||||
BUG_ON(!ppc_md.hpte_insert);
|
||||
ret = ppc_md.hpte_insert(hpteg, va, paddr, prot,
|
||||
ret = ppc_md.hpte_insert(hpteg, va, paddr, tprot,
|
||||
HPTE_V_BOLTED, psize, ssize);
|
||||
|
||||
if (ret < 0)
|
||||
@ -584,7 +589,7 @@ void __init htab_initialize(void)
|
||||
{
|
||||
unsigned long table;
|
||||
unsigned long pteg_count;
|
||||
unsigned long prot, tprot;
|
||||
unsigned long prot;
|
||||
unsigned long base = 0, size = 0, limit;
|
||||
int i;
|
||||
|
||||
@ -660,10 +665,9 @@ void __init htab_initialize(void)
|
||||
for (i=0; i < lmb.memory.cnt; i++) {
|
||||
base = (unsigned long)__va(lmb.memory.region[i].base);
|
||||
size = lmb.memory.region[i].size;
|
||||
tprot = prot | (in_kernel_text(base) ? _PAGE_EXEC : 0);
|
||||
|
||||
DBG("creating mapping for region: %lx..%lx (prot: %x)\n",
|
||||
base, size, tprot);
|
||||
base, size, prot);
|
||||
|
||||
#ifdef CONFIG_U3_DART
|
||||
/* Do not map the DART space. Fortunately, it will be aligned
|
||||
@ -680,21 +684,21 @@ void __init htab_initialize(void)
|
||||
unsigned long dart_table_end = dart_tablebase + 16 * MB;
|
||||
if (base != dart_tablebase)
|
||||
BUG_ON(htab_bolt_mapping(base, dart_tablebase,
|
||||
__pa(base), tprot,
|
||||
__pa(base), prot,
|
||||
mmu_linear_psize,
|
||||
mmu_kernel_ssize));
|
||||
if ((base + size) > dart_table_end)
|
||||
BUG_ON(htab_bolt_mapping(dart_tablebase+16*MB,
|
||||
base + size,
|
||||
__pa(dart_table_end),
|
||||
tprot,
|
||||
prot,
|
||||
mmu_linear_psize,
|
||||
mmu_kernel_ssize));
|
||||
continue;
|
||||
}
|
||||
#endif /* CONFIG_U3_DART */
|
||||
BUG_ON(htab_bolt_mapping(base, base + size, __pa(base),
|
||||
tprot, mmu_linear_psize, mmu_kernel_ssize));
|
||||
prot, mmu_linear_psize, mmu_kernel_ssize));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2,7 +2,7 @@ CFLAGS_bootx_init.o += -fPIC
|
||||
|
||||
ifdef CONFIG_FTRACE
|
||||
# Do not trace early boot code
|
||||
CFLAGS_REMOVE_bootx_init.o = -pg
|
||||
CFLAGS_REMOVE_bootx_init.o = -pg -mno-sched-epilog
|
||||
endif
|
||||
|
||||
obj-y += pic.o setup.o time.o feature.o pci.o \
|
||||
|
@ -151,6 +151,8 @@ struct sw_rx_page {
|
||||
#define PAGES_PER_SGE_SHIFT 0
|
||||
#define PAGES_PER_SGE (1 << PAGES_PER_SGE_SHIFT)
|
||||
|
||||
#define BCM_RX_ETH_PAYLOAD_ALIGN 64
|
||||
|
||||
/* SGE ring related macros */
|
||||
#define NUM_RX_SGE_PAGES 2
|
||||
#define RX_SGE_CNT (BCM_PAGE_SIZE / sizeof(struct eth_rx_sge))
|
||||
@ -750,8 +752,7 @@ struct bnx2x {
|
||||
|
||||
u32 rx_csum;
|
||||
u32 rx_offset;
|
||||
u32 rx_buf_use_size; /* useable size */
|
||||
u32 rx_buf_size; /* with alignment */
|
||||
u32 rx_buf_size;
|
||||
#define ETH_OVREHEAD (ETH_HLEN + 8) /* 8 for CRC + VLAN */
|
||||
#define ETH_MIN_PACKET_SIZE 60
|
||||
#define ETH_MAX_PACKET_SIZE 1500
|
||||
|
@ -59,8 +59,8 @@
|
||||
#include "bnx2x.h"
|
||||
#include "bnx2x_init.h"
|
||||
|
||||
#define DRV_MODULE_VERSION "1.45.20"
|
||||
#define DRV_MODULE_RELDATE "2008/08/25"
|
||||
#define DRV_MODULE_VERSION "1.45.21"
|
||||
#define DRV_MODULE_RELDATE "2008/09/03"
|
||||
#define BNX2X_BC_VER 0x040200
|
||||
|
||||
/* Time in jiffies before concluding the transmitter is hung */
|
||||
@ -1027,7 +1027,7 @@ static inline int bnx2x_alloc_rx_skb(struct bnx2x *bp,
|
||||
if (unlikely(skb == NULL))
|
||||
return -ENOMEM;
|
||||
|
||||
mapping = pci_map_single(bp->pdev, skb->data, bp->rx_buf_use_size,
|
||||
mapping = pci_map_single(bp->pdev, skb->data, bp->rx_buf_size,
|
||||
PCI_DMA_FROMDEVICE);
|
||||
if (unlikely(dma_mapping_error(&bp->pdev->dev, mapping))) {
|
||||
dev_kfree_skb(skb);
|
||||
@ -1169,7 +1169,7 @@ static void bnx2x_tpa_start(struct bnx2x_fastpath *fp, u16 queue,
|
||||
/* move empty skb from pool to prod and map it */
|
||||
prod_rx_buf->skb = fp->tpa_pool[queue].skb;
|
||||
mapping = pci_map_single(bp->pdev, fp->tpa_pool[queue].skb->data,
|
||||
bp->rx_buf_use_size, PCI_DMA_FROMDEVICE);
|
||||
bp->rx_buf_size, PCI_DMA_FROMDEVICE);
|
||||
pci_unmap_addr_set(prod_rx_buf, mapping, mapping);
|
||||
|
||||
/* move partial skb from cons to pool (don't unmap yet) */
|
||||
@ -1276,7 +1276,7 @@ static void bnx2x_tpa_stop(struct bnx2x *bp, struct bnx2x_fastpath *fp,
|
||||
pool entry status to BNX2X_TPA_STOP even if new skb allocation
|
||||
fails. */
|
||||
pci_unmap_single(bp->pdev, pci_unmap_addr(rx_buf, mapping),
|
||||
bp->rx_buf_use_size, PCI_DMA_FROMDEVICE);
|
||||
bp->rx_buf_size, PCI_DMA_FROMDEVICE);
|
||||
|
||||
if (likely(new_skb)) {
|
||||
/* fix ip xsum and give it to the stack */
|
||||
@ -1520,7 +1520,7 @@ static int bnx2x_rx_int(struct bnx2x_fastpath *fp, int budget)
|
||||
} else if (bnx2x_alloc_rx_skb(bp, fp, bd_prod) == 0) {
|
||||
pci_unmap_single(bp->pdev,
|
||||
pci_unmap_addr(rx_buf, mapping),
|
||||
bp->rx_buf_use_size,
|
||||
bp->rx_buf_size,
|
||||
PCI_DMA_FROMDEVICE);
|
||||
skb_reserve(skb, pad);
|
||||
skb_put(skb, len);
|
||||
@ -4229,7 +4229,7 @@ static inline void bnx2x_free_tpa_pool(struct bnx2x *bp,
|
||||
if (fp->tpa_state[i] == BNX2X_TPA_START)
|
||||
pci_unmap_single(bp->pdev,
|
||||
pci_unmap_addr(rx_buf, mapping),
|
||||
bp->rx_buf_use_size,
|
||||
bp->rx_buf_size,
|
||||
PCI_DMA_FROMDEVICE);
|
||||
|
||||
dev_kfree_skb(skb);
|
||||
@ -4245,15 +4245,14 @@ static void bnx2x_init_rx_rings(struct bnx2x *bp)
|
||||
u16 ring_prod, cqe_ring_prod;
|
||||
int i, j;
|
||||
|
||||
bp->rx_buf_use_size = bp->dev->mtu;
|
||||
bp->rx_buf_use_size += bp->rx_offset + ETH_OVREHEAD;
|
||||
bp->rx_buf_size = bp->rx_buf_use_size + 64;
|
||||
bp->rx_buf_size = bp->dev->mtu;
|
||||
bp->rx_buf_size += bp->rx_offset + ETH_OVREHEAD +
|
||||
BCM_RX_ETH_PAYLOAD_ALIGN;
|
||||
|
||||
if (bp->flags & TPA_ENABLE_FLAG) {
|
||||
DP(NETIF_MSG_IFUP,
|
||||
"rx_buf_use_size %d rx_buf_size %d effective_mtu %d\n",
|
||||
bp->rx_buf_use_size, bp->rx_buf_size,
|
||||
bp->dev->mtu + ETH_OVREHEAD);
|
||||
"rx_buf_size %d effective_mtu %d\n",
|
||||
bp->rx_buf_size, bp->dev->mtu + ETH_OVREHEAD);
|
||||
|
||||
for_each_queue(bp, j) {
|
||||
struct bnx2x_fastpath *fp = &bp->fp[j];
|
||||
@ -4462,9 +4461,10 @@ static void bnx2x_init_context(struct bnx2x *bp)
|
||||
context->ustorm_st_context.common.status_block_id = sb_id;
|
||||
context->ustorm_st_context.common.flags =
|
||||
USTORM_ETH_ST_CONTEXT_CONFIG_ENABLE_MC_ALIGNMENT;
|
||||
context->ustorm_st_context.common.mc_alignment_size = 64;
|
||||
context->ustorm_st_context.common.mc_alignment_size =
|
||||
BCM_RX_ETH_PAYLOAD_ALIGN;
|
||||
context->ustorm_st_context.common.bd_buff_size =
|
||||
bp->rx_buf_use_size;
|
||||
bp->rx_buf_size;
|
||||
context->ustorm_st_context.common.bd_page_base_hi =
|
||||
U64_HI(fp->rx_desc_mapping);
|
||||
context->ustorm_st_context.common.bd_page_base_lo =
|
||||
@ -4717,7 +4717,7 @@ static void bnx2x_init_internal_func(struct bnx2x *bp)
|
||||
}
|
||||
|
||||
/* Init CQ ring mapping and aggregation size */
|
||||
max_agg_size = min((u32)(bp->rx_buf_use_size +
|
||||
max_agg_size = min((u32)(bp->rx_buf_size +
|
||||
8*BCM_PAGE_SIZE*PAGES_PER_SGE),
|
||||
(u32)0xffff);
|
||||
for_each_queue(bp, i) {
|
||||
@ -5940,7 +5940,7 @@ static void bnx2x_free_rx_skbs(struct bnx2x *bp)
|
||||
|
||||
pci_unmap_single(bp->pdev,
|
||||
pci_unmap_addr(rx_buf, mapping),
|
||||
bp->rx_buf_use_size,
|
||||
bp->rx_buf_size,
|
||||
PCI_DMA_FROMDEVICE);
|
||||
|
||||
rx_buf->skb = NULL;
|
||||
|
@ -2303,6 +2303,12 @@ static int __devinit ixgbe_set_interrupt_capability(struct ixgbe_adapter
|
||||
int err = 0;
|
||||
int vector, v_budget;
|
||||
|
||||
/*
|
||||
* Set the default interrupt throttle rate.
|
||||
*/
|
||||
adapter->rx_eitr = (1000000 / IXGBE_DEFAULT_ITR_RX_USECS);
|
||||
adapter->tx_eitr = (1000000 / IXGBE_DEFAULT_ITR_TX_USECS);
|
||||
|
||||
/*
|
||||
* It's easy to be greedy for MSI-X vectors, but it really
|
||||
* doesn't do us much good if we have a lot more vectors
|
||||
|
@ -359,16 +359,6 @@ static void netxen_pcie_strap_init(struct netxen_adapter *adapter)
|
||||
int i, pos;
|
||||
struct pci_dev *pdev;
|
||||
|
||||
pdev = pci_get_device(0x1166, 0x0140, NULL);
|
||||
if (pdev) {
|
||||
pci_dev_put(pdev);
|
||||
adapter->hw_read_wx(adapter,
|
||||
NETXEN_PCIE_REG(PCIE_TGT_SPLIT_CHICKEN), &chicken, 4);
|
||||
chicken |= 0x4000;
|
||||
adapter->hw_write_wx(adapter,
|
||||
NETXEN_PCIE_REG(PCIE_TGT_SPLIT_CHICKEN), &chicken, 4);
|
||||
}
|
||||
|
||||
pdev = adapter->pdev;
|
||||
|
||||
adapter->hw_read_wx(adapter,
|
||||
|
@ -784,6 +784,7 @@ static struct pcmcia_device_id axnet_ids[] = {
|
||||
PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega FEther PCC-TXD", 0x5261440f, 0x436768c5),
|
||||
PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega FEtherII PCC-TXD", 0x5261440f, 0x730df72e),
|
||||
PCMCIA_DEVICE_PROD_ID12("Dynalink", "L100C16", 0x55632fd5, 0x66bc2a90),
|
||||
PCMCIA_DEVICE_PROD_ID12("IO DATA", "ETXPCM", 0x547e66dc, 0x233adac2),
|
||||
PCMCIA_DEVICE_PROD_ID12("Linksys", "EtherFast 10/100 PC Card (PCMPC100 V3)", 0x0733cc81, 0x232019a8),
|
||||
PCMCIA_DEVICE_PROD_ID12("MELCO", "LPC3-TX", 0x481e0094, 0xf91af609),
|
||||
PCMCIA_DEVICE_PROD_ID12("PCMCIA", "100BASE", 0x281f1c5d, 0x7c2add04),
|
||||
|
@ -1626,6 +1626,7 @@ static struct pcmcia_device_id pcnet_ids[] = {
|
||||
PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega EtherII PCC-TD", 0x5261440f, 0xc49bd73d),
|
||||
PCMCIA_DEVICE_PROD_ID12("Corega K.K.", "corega EtherII PCC-TD", 0xd4fdcbd8, 0xc49bd73d),
|
||||
PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega Ether PCC-T", 0x5261440f, 0x6705fcaa),
|
||||
PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega Ether PCC-TD", 0x5261440f, 0x47d5ca83),
|
||||
PCMCIA_DEVICE_PROD_ID12("corega K.K.", "corega FastEther PCC-TX", 0x5261440f, 0x485e85d9),
|
||||
PCMCIA_DEVICE_PROD_ID12("Corega,K.K.", "Ethernet LAN Card", 0x110d26d9, 0x9fd2f0a2),
|
||||
PCMCIA_DEVICE_PROD_ID12("corega,K.K.", "Ethernet LAN Card", 0x9791a90e, 0x9fd2f0a2),
|
||||
@ -1737,7 +1738,6 @@ static struct pcmcia_device_id pcnet_ids[] = {
|
||||
PCMCIA_DEVICE_PROD_ID1("CyQ've 10 Base-T LAN CARD", 0x94faf360),
|
||||
PCMCIA_DEVICE_PROD_ID1("EP-210 PCMCIA LAN CARD.", 0x8850b4de),
|
||||
PCMCIA_DEVICE_PROD_ID1("ETHER-C16", 0x06a8514f),
|
||||
PCMCIA_DEVICE_PROD_ID1("IC-CARD", 0x60cb09a6),
|
||||
PCMCIA_DEVICE_PROD_ID1("NE2000 Compatible", 0x75b8ad5a),
|
||||
PCMCIA_DEVICE_PROD_ID2("EN-6200P2", 0xa996d078),
|
||||
/* too generic! */
|
||||
|
@ -117,7 +117,7 @@ static void ctrl_callback(struct urb *urb)
|
||||
case -ENOENT:
|
||||
break;
|
||||
default:
|
||||
if (netif_msg_drv(pegasus))
|
||||
if (netif_msg_drv(pegasus) && printk_ratelimit())
|
||||
dev_dbg(&pegasus->intf->dev, "%s, status %d\n",
|
||||
__FUNCTION__, urb->status);
|
||||
}
|
||||
@ -166,7 +166,7 @@ static int get_registers(pegasus_t * pegasus, __u16 indx, __u16 size,
|
||||
set_current_state(TASK_RUNNING);
|
||||
if (ret == -ENODEV)
|
||||
netif_device_detach(pegasus->net);
|
||||
if (netif_msg_drv(pegasus))
|
||||
if (netif_msg_drv(pegasus) && printk_ratelimit())
|
||||
dev_err(&pegasus->intf->dev, "%s, status %d\n",
|
||||
__FUNCTION__, ret);
|
||||
goto out;
|
||||
@ -275,7 +275,7 @@ static int set_register(pegasus_t * pegasus, __u16 indx, __u8 data)
|
||||
if ((ret = usb_submit_urb(pegasus->ctrl_urb, GFP_ATOMIC))) {
|
||||
if (ret == -ENODEV)
|
||||
netif_device_detach(pegasus->net);
|
||||
if (netif_msg_drv(pegasus))
|
||||
if (netif_msg_drv(pegasus) && printk_ratelimit())
|
||||
dev_err(&pegasus->intf->dev, "%s, status %d\n",
|
||||
__FUNCTION__, ret);
|
||||
goto out;
|
||||
@ -1209,8 +1209,7 @@ static void pegasus_set_multicast(struct net_device *net)
|
||||
pegasus->eth_regs[EthCtrl2] |= RX_PROMISCUOUS;
|
||||
if (netif_msg_link(pegasus))
|
||||
pr_info("%s: Promiscuous mode enabled.\n", net->name);
|
||||
} else if (net->mc_count ||
|
||||
(net->flags & IFF_ALLMULTI)) {
|
||||
} else if (net->mc_count || (net->flags & IFF_ALLMULTI)) {
|
||||
pegasus->eth_regs[EthCtrl0] |= RX_MULTICAST;
|
||||
pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS;
|
||||
if (netif_msg_link(pegasus))
|
||||
@ -1220,6 +1219,8 @@ static void pegasus_set_multicast(struct net_device *net)
|
||||
pegasus->eth_regs[EthCtrl2] &= ~RX_PROMISCUOUS;
|
||||
}
|
||||
|
||||
pegasus->ctrl_urb->status = 0;
|
||||
|
||||
pegasus->flags |= ETH_REGS_CHANGE;
|
||||
ctrl_callback(pegasus->ctrl_urb);
|
||||
}
|
||||
|
@ -1067,8 +1067,16 @@ void ath_tx_complete(struct ath_softc *sc, struct sk_buff *skb,
|
||||
tx_info->flags |= IEEE80211_TX_STAT_AMPDU_NO_BACK;
|
||||
tx_status->flags &= ~ATH_TX_BAR;
|
||||
}
|
||||
if (tx_status->flags)
|
||||
tx_info->status.excessive_retries = 1;
|
||||
|
||||
if (tx_status->flags & (ATH_TX_ERROR | ATH_TX_XRETRY)) {
|
||||
if (!(tx_info->flags & IEEE80211_TX_CTL_NO_ACK)) {
|
||||
/* Frame was not ACKed, but an ACK was expected */
|
||||
tx_info->status.excessive_retries = 1;
|
||||
}
|
||||
} else {
|
||||
/* Frame was ACKed */
|
||||
tx_info->flags |= IEEE80211_TX_STAT_ACK;
|
||||
}
|
||||
|
||||
tx_info->status.retry_count = tx_status->retries;
|
||||
|
||||
|
@ -357,9 +357,9 @@ static int ath_tx_prepare(struct ath_softc *sc,
|
||||
txctl->flags = ATH9K_TXDESC_CLRDMASK; /* needed for crypto errors */
|
||||
|
||||
if (tx_info->flags & IEEE80211_TX_CTL_NO_ACK)
|
||||
tx_info->flags |= ATH9K_TXDESC_NOACK;
|
||||
txctl->flags |= ATH9K_TXDESC_NOACK;
|
||||
if (tx_info->flags & IEEE80211_TX_CTL_USE_RTS_CTS)
|
||||
tx_info->flags |= ATH9K_TXDESC_RTSENA;
|
||||
txctl->flags |= ATH9K_TXDESC_RTSENA;
|
||||
|
||||
/*
|
||||
* Setup for rate calculations.
|
||||
|
@ -1153,7 +1153,8 @@ static int rs_switch_to_mimo2(struct iwl_priv *priv,
|
||||
!sta->ht_info.ht_supported)
|
||||
return -1;
|
||||
|
||||
if (priv->current_ht_config.tx_mimo_ps_mode == IWL_MIMO_PS_STATIC)
|
||||
if (((sta->ht_info.cap & IEEE80211_HT_CAP_MIMO_PS) >> 2)
|
||||
== IWL_MIMO_PS_STATIC)
|
||||
return -1;
|
||||
|
||||
/* Need both Tx chains/antennas to support MIMO */
|
||||
|
@ -181,14 +181,14 @@ static int iwl4965_check_rxon_cmd(struct iwl_rxon_cmd *rxon)
|
||||
}
|
||||
|
||||
/**
|
||||
* iwl4965_full_rxon_required - check if full RXON (vs RXON_ASSOC) cmd is needed
|
||||
* iwl_full_rxon_required - check if full RXON (vs RXON_ASSOC) cmd is needed
|
||||
* @priv: staging_rxon is compared to active_rxon
|
||||
*
|
||||
* If the RXON structure is changing enough to require a new tune,
|
||||
* or is clearing the RXON_FILTER_ASSOC_MSK, then return 1 to indicate that
|
||||
* a new tune (full RXON command, rather than RXON_ASSOC cmd) is required.
|
||||
*/
|
||||
static int iwl4965_full_rxon_required(struct iwl_priv *priv)
|
||||
static int iwl_full_rxon_required(struct iwl_priv *priv)
|
||||
{
|
||||
|
||||
/* These items are only settable from the full RXON command */
|
||||
@ -207,7 +207,6 @@ static int iwl4965_full_rxon_required(struct iwl_priv *priv)
|
||||
priv->active_rxon.ofdm_ht_single_stream_basic_rates) ||
|
||||
(priv->staging_rxon.ofdm_ht_dual_stream_basic_rates !=
|
||||
priv->active_rxon.ofdm_ht_dual_stream_basic_rates) ||
|
||||
(priv->staging_rxon.rx_chain != priv->active_rxon.rx_chain) ||
|
||||
(priv->staging_rxon.assoc_id != priv->active_rxon.assoc_id))
|
||||
return 1;
|
||||
|
||||
@ -263,7 +262,7 @@ static int iwl4965_commit_rxon(struct iwl_priv *priv)
|
||||
/* If we don't need to send a full RXON, we can use
|
||||
* iwl4965_rxon_assoc_cmd which is used to reconfigure filter
|
||||
* and other flags for the current radio configuration. */
|
||||
if (!iwl4965_full_rxon_required(priv)) {
|
||||
if (!iwl_full_rxon_required(priv)) {
|
||||
ret = iwl_send_rxon_assoc(priv);
|
||||
if (ret) {
|
||||
IWL_ERROR("Error setting RXON_ASSOC (%d)\n", ret);
|
||||
@ -587,8 +586,6 @@ static void iwl4965_ht_conf(struct iwl_priv *priv,
|
||||
iwl_conf->supported_chan_width = 0;
|
||||
}
|
||||
|
||||
iwl_conf->tx_mimo_ps_mode =
|
||||
(u8)((ht_conf->cap & IEEE80211_HT_CAP_MIMO_PS) >> 2);
|
||||
memcpy(iwl_conf->supp_mcs_set, ht_conf->supp_mcs_set, 16);
|
||||
|
||||
iwl_conf->control_channel = ht_bss_conf->primary_channel;
|
||||
@ -2190,7 +2187,10 @@ static void __iwl4965_down(struct iwl_priv *priv)
|
||||
udelay(5);
|
||||
|
||||
/* FIXME: apm_ops.suspend(priv) */
|
||||
priv->cfg->ops->lib->apm_ops.reset(priv);
|
||||
if (exit_pending || test_bit(STATUS_IN_SUSPEND, &priv->status))
|
||||
priv->cfg->ops->lib->apm_ops.stop(priv);
|
||||
else
|
||||
priv->cfg->ops->lib->apm_ops.reset(priv);
|
||||
priv->cfg->ops->lib->free_shared_mem(priv);
|
||||
|
||||
exit:
|
||||
@ -3588,7 +3588,7 @@ static int iwl4965_mac_beacon_update(struct ieee80211_hw *hw, struct sk_buff *sk
|
||||
|
||||
priv->assoc_id = 0;
|
||||
timestamp = ((struct ieee80211_mgmt *)skb->data)->u.beacon.timestamp;
|
||||
priv->timestamp = le64_to_cpu(timestamp) + (priv->beacon_int * 1000);
|
||||
priv->timestamp = le64_to_cpu(timestamp);
|
||||
|
||||
IWL_DEBUG_MAC80211("leave\n");
|
||||
spin_unlock_irqrestore(&priv->lock, flags);
|
||||
@ -4372,15 +4372,18 @@ static void __devexit iwl4965_pci_remove(struct pci_dev *pdev)
|
||||
iwl_dbgfs_unregister(priv);
|
||||
sysfs_remove_group(&pdev->dev.kobj, &iwl4965_attribute_group);
|
||||
|
||||
/* ieee80211_unregister_hw call wil cause iwl4965_mac_stop to
|
||||
* to be called and iwl4965_down since we are removing the device
|
||||
* we need to set STATUS_EXIT_PENDING bit.
|
||||
*/
|
||||
set_bit(STATUS_EXIT_PENDING, &priv->status);
|
||||
if (priv->mac80211_registered) {
|
||||
ieee80211_unregister_hw(priv->hw);
|
||||
priv->mac80211_registered = 0;
|
||||
} else {
|
||||
iwl4965_down(priv);
|
||||
}
|
||||
|
||||
set_bit(STATUS_EXIT_PENDING, &priv->status);
|
||||
|
||||
iwl4965_down(priv);
|
||||
|
||||
/* make sure we flush any pending irq or
|
||||
* tasklet for the driver
|
||||
*/
|
||||
|
@ -592,12 +592,11 @@ static void iwlcore_free_geos(struct iwl_priv *priv)
|
||||
clear_bit(STATUS_GEO_CONFIGURED, &priv->status);
|
||||
}
|
||||
|
||||
static u8 is_single_rx_stream(struct iwl_priv *priv)
|
||||
static bool is_single_rx_stream(struct iwl_priv *priv)
|
||||
{
|
||||
return !priv->current_ht_config.is_ht ||
|
||||
((priv->current_ht_config.supp_mcs_set[1] == 0) &&
|
||||
(priv->current_ht_config.supp_mcs_set[2] == 0)) ||
|
||||
priv->ps_mode == IWL_MIMO_PS_STATIC;
|
||||
(priv->current_ht_config.supp_mcs_set[2] == 0));
|
||||
}
|
||||
|
||||
static u8 iwl_is_channel_extension(struct iwl_priv *priv,
|
||||
@ -704,33 +703,39 @@ EXPORT_SYMBOL(iwl_set_rxon_ht);
|
||||
* MIMO (dual stream) requires at least 2, but works better with 3.
|
||||
* This does not determine *which* chains to use, just how many.
|
||||
*/
|
||||
static int iwlcore_get_rx_chain_counter(struct iwl_priv *priv,
|
||||
u8 *idle_state, u8 *rx_state)
|
||||
static int iwl_get_active_rx_chain_count(struct iwl_priv *priv)
|
||||
{
|
||||
u8 is_single = is_single_rx_stream(priv);
|
||||
u8 is_cam = test_bit(STATUS_POWER_PMI, &priv->status) ? 0 : 1;
|
||||
bool is_single = is_single_rx_stream(priv);
|
||||
bool is_cam = !test_bit(STATUS_POWER_PMI, &priv->status);
|
||||
|
||||
/* # of Rx chains to use when expecting MIMO. */
|
||||
if (is_single || (!is_cam && (priv->ps_mode == IWL_MIMO_PS_STATIC)))
|
||||
*rx_state = 2;
|
||||
return 2;
|
||||
else
|
||||
*rx_state = 3;
|
||||
return 3;
|
||||
}
|
||||
|
||||
static int iwl_get_idle_rx_chain_count(struct iwl_priv *priv, int active_cnt)
|
||||
{
|
||||
int idle_cnt;
|
||||
bool is_cam = !test_bit(STATUS_POWER_PMI, &priv->status);
|
||||
/* # Rx chains when idling and maybe trying to save power */
|
||||
switch (priv->ps_mode) {
|
||||
case IWL_MIMO_PS_STATIC:
|
||||
case IWL_MIMO_PS_DYNAMIC:
|
||||
*idle_state = (is_cam) ? 2 : 1;
|
||||
idle_cnt = (is_cam) ? 2 : 1;
|
||||
break;
|
||||
case IWL_MIMO_PS_NONE:
|
||||
*idle_state = (is_cam) ? *rx_state : 1;
|
||||
idle_cnt = (is_cam) ? active_cnt : 1;
|
||||
break;
|
||||
case IWL_MIMO_PS_INVALID:
|
||||
default:
|
||||
*idle_state = 1;
|
||||
IWL_ERROR("invalide mimo ps mode %d\n", priv->ps_mode);
|
||||
WARN_ON(1);
|
||||
idle_cnt = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return idle_cnt;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -741,34 +746,44 @@ static int iwlcore_get_rx_chain_counter(struct iwl_priv *priv,
|
||||
*/
|
||||
void iwl_set_rxon_chain(struct iwl_priv *priv)
|
||||
{
|
||||
u8 is_single = is_single_rx_stream(priv);
|
||||
u8 idle_state, rx_state;
|
||||
|
||||
priv->staging_rxon.rx_chain = 0;
|
||||
rx_state = idle_state = 3;
|
||||
bool is_single = is_single_rx_stream(priv);
|
||||
bool is_cam = !test_bit(STATUS_POWER_PMI, &priv->status);
|
||||
u8 idle_rx_cnt, active_rx_cnt;
|
||||
u16 rx_chain;
|
||||
|
||||
/* Tell uCode which antennas are actually connected.
|
||||
* Before first association, we assume all antennas are connected.
|
||||
* Just after first association, iwl_chain_noise_calibration()
|
||||
* checks which antennas actually *are* connected. */
|
||||
priv->staging_rxon.rx_chain |=
|
||||
cpu_to_le16(priv->hw_params.valid_rx_ant <<
|
||||
RXON_RX_CHAIN_VALID_POS);
|
||||
rx_chain = priv->hw_params.valid_rx_ant << RXON_RX_CHAIN_VALID_POS;
|
||||
|
||||
/* How many receivers should we use? */
|
||||
iwlcore_get_rx_chain_counter(priv, &idle_state, &rx_state);
|
||||
priv->staging_rxon.rx_chain |=
|
||||
cpu_to_le16(rx_state << RXON_RX_CHAIN_MIMO_CNT_POS);
|
||||
priv->staging_rxon.rx_chain |=
|
||||
cpu_to_le16(idle_state << RXON_RX_CHAIN_CNT_POS);
|
||||
active_rx_cnt = iwl_get_active_rx_chain_count(priv);
|
||||
idle_rx_cnt = iwl_get_idle_rx_chain_count(priv, active_rx_cnt);
|
||||
|
||||
if (!is_single && (rx_state >= 2) &&
|
||||
!test_bit(STATUS_POWER_PMI, &priv->status))
|
||||
/* correct rx chain count accoridng hw settings */
|
||||
if (priv->hw_params.rx_chains_num < active_rx_cnt)
|
||||
active_rx_cnt = priv->hw_params.rx_chains_num;
|
||||
|
||||
if (priv->hw_params.rx_chains_num < idle_rx_cnt)
|
||||
idle_rx_cnt = priv->hw_params.rx_chains_num;
|
||||
|
||||
rx_chain |= active_rx_cnt << RXON_RX_CHAIN_MIMO_CNT_POS;
|
||||
rx_chain |= idle_rx_cnt << RXON_RX_CHAIN_CNT_POS;
|
||||
|
||||
priv->staging_rxon.rx_chain = cpu_to_le16(rx_chain);
|
||||
|
||||
if (!is_single && (active_rx_cnt >= 2) && is_cam)
|
||||
priv->staging_rxon.rx_chain |= RXON_RX_CHAIN_MIMO_FORCE_MSK;
|
||||
else
|
||||
priv->staging_rxon.rx_chain &= ~RXON_RX_CHAIN_MIMO_FORCE_MSK;
|
||||
|
||||
IWL_DEBUG_ASSOC("rx chain %X\n", priv->staging_rxon.rx_chain);
|
||||
IWL_DEBUG_ASSOC("rx_chain=0x%Xi active=%d idle=%d\n",
|
||||
priv->staging_rxon.rx_chain,
|
||||
active_rx_cnt, idle_rx_cnt);
|
||||
|
||||
WARN_ON(active_rx_cnt == 0 || idle_rx_cnt == 0 ||
|
||||
active_rx_cnt < idle_rx_cnt);
|
||||
}
|
||||
EXPORT_SYMBOL(iwl_set_rxon_chain);
|
||||
|
||||
|
@ -412,7 +412,6 @@ struct iwl_ht_info {
|
||||
/* self configuration data */
|
||||
u8 is_ht;
|
||||
u8 supported_chan_width;
|
||||
u16 tx_mimo_ps_mode;
|
||||
u8 is_green_field;
|
||||
u8 sgf; /* HT_SHORT_GI_* short guard interval */
|
||||
u8 max_amsdu_size;
|
||||
|
@ -1173,7 +1173,10 @@ void iwl_rx_reply_rx(struct iwl_priv *priv,
|
||||
|
||||
rx_status.antenna = 0;
|
||||
rx_status.flag = 0;
|
||||
rx_status.flag |= RX_FLAG_TSFT;
|
||||
|
||||
/* TSF isn't reliable. In order to allow smooth user experience,
|
||||
* this W/A doesn't propagate it to the mac80211 */
|
||||
/*rx_status.flag |= RX_FLAG_TSFT;*/
|
||||
|
||||
if ((unlikely(rx_start->cfg_phy_cnt > 20))) {
|
||||
IWL_DEBUG_DROP("dsp size out of range [0,20]: %d/n",
|
||||
|
@ -421,7 +421,7 @@ static int iwl_get_channels_for_scan(struct iwl_priv *priv,
|
||||
else
|
||||
scan_ch->type = SCAN_CHANNEL_TYPE_ACTIVE;
|
||||
|
||||
if ((scan_ch->type & SCAN_CHANNEL_TYPE_ACTIVE) && n_probes)
|
||||
if (n_probes)
|
||||
scan_ch->type |= IWL_SCAN_PROBE_MASK(n_probes);
|
||||
|
||||
scan_ch->active_dwell = cpu_to_le16(active_dwell);
|
||||
|
@ -402,12 +402,11 @@ static int iwl_hw_tx_queue_init(struct iwl_priv *priv,
|
||||
/**
|
||||
* iwl_tx_queue_init - Allocate and initialize one tx/cmd queue
|
||||
*/
|
||||
static int iwl_tx_queue_init(struct iwl_priv *priv,
|
||||
struct iwl_tx_queue *txq,
|
||||
static int iwl_tx_queue_init(struct iwl_priv *priv, struct iwl_tx_queue *txq,
|
||||
int slots_num, u32 txq_id)
|
||||
{
|
||||
int i, len;
|
||||
int rc = 0;
|
||||
int ret;
|
||||
|
||||
/*
|
||||
* Alloc buffer array for commands (Tx or other types of commands).
|
||||
@ -428,17 +427,14 @@ static int iwl_tx_queue_init(struct iwl_priv *priv,
|
||||
|
||||
txq->cmd[i] = kmalloc(len, GFP_KERNEL);
|
||||
if (!txq->cmd[i])
|
||||
return -ENOMEM;
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* Alloc driver data array and TFD circular buffer */
|
||||
rc = iwl_tx_queue_alloc(priv, txq, txq_id);
|
||||
if (rc) {
|
||||
for (i = 0; i < slots_num; i++)
|
||||
kfree(txq->cmd[i]);
|
||||
ret = iwl_tx_queue_alloc(priv, txq, txq_id);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
return -ENOMEM;
|
||||
}
|
||||
txq->need_update = 0;
|
||||
|
||||
/* TFD_QUEUE_SIZE_MAX must be power-of-two size, otherwise
|
||||
@ -452,6 +448,17 @@ static int iwl_tx_queue_init(struct iwl_priv *priv,
|
||||
iwl_hw_tx_queue_init(priv, txq);
|
||||
|
||||
return 0;
|
||||
err:
|
||||
for (i = 0; i < slots_num; i++) {
|
||||
kfree(txq->cmd[i]);
|
||||
txq->cmd[i] = NULL;
|
||||
}
|
||||
|
||||
if (txq_id == IWL_CMD_QUEUE_NUM) {
|
||||
kfree(txq->cmd[slots_num]);
|
||||
txq->cmd[slots_num] = NULL;
|
||||
}
|
||||
return -ENOMEM;
|
||||
}
|
||||
/**
|
||||
* iwl_hw_txq_ctx_free - Free TXQ Context
|
||||
|
@ -108,6 +108,9 @@ extern struct resource iomem_resource;
|
||||
|
||||
extern int request_resource(struct resource *root, struct resource *new);
|
||||
extern int release_resource(struct resource *new);
|
||||
extern void reserve_region_with_split(struct resource *root,
|
||||
resource_size_t start, resource_size_t end,
|
||||
const char *name);
|
||||
extern int insert_resource(struct resource *parent, struct resource *new);
|
||||
extern void insert_resource_expand_to_fit(struct resource *root, struct resource *new);
|
||||
extern int allocate_resource(struct resource *root, struct resource *new,
|
||||
|
@ -516,6 +516,74 @@ int adjust_resource(struct resource *res, resource_size_t start, resource_size_t
|
||||
return result;
|
||||
}
|
||||
|
||||
static void __init __reserve_region_with_split(struct resource *root,
|
||||
resource_size_t start, resource_size_t end,
|
||||
const char *name)
|
||||
{
|
||||
struct resource *parent = root;
|
||||
struct resource *conflict;
|
||||
struct resource *res = kzalloc(sizeof(*res), GFP_KERNEL);
|
||||
|
||||
if (!res)
|
||||
return;
|
||||
|
||||
res->name = name;
|
||||
res->start = start;
|
||||
res->end = end;
|
||||
res->flags = IORESOURCE_BUSY;
|
||||
|
||||
for (;;) {
|
||||
conflict = __request_resource(parent, res);
|
||||
if (!conflict)
|
||||
break;
|
||||
if (conflict != parent) {
|
||||
parent = conflict;
|
||||
if (!(conflict->flags & IORESOURCE_BUSY))
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Uhhuh, that didn't work out.. */
|
||||
kfree(res);
|
||||
res = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!res) {
|
||||
printk(KERN_DEBUG " __reserve_region_with_split: (%s) [%llx, %llx], res: (%s) [%llx, %llx]\n",
|
||||
conflict->name, conflict->start, conflict->end,
|
||||
name, start, end);
|
||||
|
||||
/* failed, split and try again */
|
||||
|
||||
/* conflict coverred whole area */
|
||||
if (conflict->start <= start && conflict->end >= end)
|
||||
return;
|
||||
|
||||
if (conflict->start > start)
|
||||
__reserve_region_with_split(root, start, conflict->start-1, name);
|
||||
if (!(conflict->flags & IORESOURCE_BUSY)) {
|
||||
resource_size_t common_start, common_end;
|
||||
|
||||
common_start = max(conflict->start, start);
|
||||
common_end = min(conflict->end, end);
|
||||
if (common_start < common_end)
|
||||
__reserve_region_with_split(root, common_start, common_end, name);
|
||||
}
|
||||
if (conflict->end < end)
|
||||
__reserve_region_with_split(root, conflict->end+1, end, name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void reserve_region_with_split(struct resource *root,
|
||||
resource_size_t start, resource_size_t end,
|
||||
const char *name)
|
||||
{
|
||||
write_lock(&resource_lock);
|
||||
__reserve_region_with_split(root, start, end, name);
|
||||
write_unlock(&resource_lock);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(adjust_resource);
|
||||
|
||||
/**
|
||||
|
@ -394,7 +394,7 @@ config LOCKDEP
|
||||
bool
|
||||
depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
|
||||
select STACKTRACE
|
||||
select FRAME_POINTER if !X86 && !MIPS
|
||||
select FRAME_POINTER if !X86 && !MIPS && !PPC
|
||||
select KALLSYMS
|
||||
select KALLSYMS_ALL
|
||||
|
||||
@ -676,13 +676,13 @@ config FAULT_INJECTION_STACKTRACE_FILTER
|
||||
depends on FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT
|
||||
depends on !X86_64
|
||||
select STACKTRACE
|
||||
select FRAME_POINTER
|
||||
select FRAME_POINTER if !PPC
|
||||
help
|
||||
Provide stacktrace filter for fault-injection capabilities
|
||||
|
||||
config LATENCYTOP
|
||||
bool "Latency measuring infrastructure"
|
||||
select FRAME_POINTER if !MIPS
|
||||
select FRAME_POINTER if !MIPS && !PPC
|
||||
select KALLSYMS
|
||||
select KALLSYMS_ALL
|
||||
select STACKTRACE
|
||||
|
@ -96,8 +96,8 @@ struct bcbearer {
|
||||
struct media media;
|
||||
struct bcbearer_pair bpairs[MAX_BEARERS];
|
||||
struct bcbearer_pair bpairs_temp[TIPC_MAX_LINK_PRI + 1];
|
||||
struct node_map remains;
|
||||
struct node_map remains_new;
|
||||
struct tipc_node_map remains;
|
||||
struct tipc_node_map remains_new;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -110,7 +110,7 @@ struct bcbearer {
|
||||
|
||||
struct bclink {
|
||||
struct link link;
|
||||
struct node node;
|
||||
struct tipc_node node;
|
||||
};
|
||||
|
||||
|
||||
@ -149,7 +149,7 @@ static void bcbuf_decr_acks(struct sk_buff *buf)
|
||||
* Called with 'node' locked, bc_lock unlocked
|
||||
*/
|
||||
|
||||
static void bclink_set_gap(struct node *n_ptr)
|
||||
static void bclink_set_gap(struct tipc_node *n_ptr)
|
||||
{
|
||||
struct sk_buff *buf = n_ptr->bclink.deferred_head;
|
||||
|
||||
@ -202,7 +202,7 @@ static void bclink_retransmit_pkt(u32 after, u32 to)
|
||||
* Node is locked, bc_lock unlocked.
|
||||
*/
|
||||
|
||||
void tipc_bclink_acknowledge(struct node *n_ptr, u32 acked)
|
||||
void tipc_bclink_acknowledge(struct tipc_node *n_ptr, u32 acked)
|
||||
{
|
||||
struct sk_buff *crs;
|
||||
struct sk_buff *next;
|
||||
@ -250,7 +250,7 @@ void tipc_bclink_acknowledge(struct node *n_ptr, u32 acked)
|
||||
* tipc_net_lock and node lock set
|
||||
*/
|
||||
|
||||
static void bclink_send_ack(struct node *n_ptr)
|
||||
static void bclink_send_ack(struct tipc_node *n_ptr)
|
||||
{
|
||||
struct link *l_ptr = n_ptr->active_links[n_ptr->addr & 1];
|
||||
|
||||
@ -264,7 +264,7 @@ static void bclink_send_ack(struct node *n_ptr)
|
||||
* tipc_net_lock and node lock set
|
||||
*/
|
||||
|
||||
static void bclink_send_nack(struct node *n_ptr)
|
||||
static void bclink_send_nack(struct tipc_node *n_ptr)
|
||||
{
|
||||
struct sk_buff *buf;
|
||||
struct tipc_msg *msg;
|
||||
@ -308,7 +308,7 @@ static void bclink_send_nack(struct node *n_ptr)
|
||||
* tipc_net_lock and node lock set
|
||||
*/
|
||||
|
||||
void tipc_bclink_check_gap(struct node *n_ptr, u32 last_sent)
|
||||
void tipc_bclink_check_gap(struct tipc_node *n_ptr, u32 last_sent)
|
||||
{
|
||||
if (!n_ptr->bclink.supported ||
|
||||
less_eq(last_sent, mod(n_ptr->bclink.last_in)))
|
||||
@ -328,7 +328,7 @@ void tipc_bclink_check_gap(struct node *n_ptr, u32 last_sent)
|
||||
|
||||
static void tipc_bclink_peek_nack(u32 dest, u32 sender_tag, u32 gap_after, u32 gap_to)
|
||||
{
|
||||
struct node *n_ptr = tipc_node_find(dest);
|
||||
struct tipc_node *n_ptr = tipc_node_find(dest);
|
||||
u32 my_after, my_to;
|
||||
|
||||
if (unlikely(!n_ptr || !tipc_node_is_up(n_ptr)))
|
||||
@ -418,7 +418,7 @@ void tipc_bclink_recv_pkt(struct sk_buff *buf)
|
||||
static int rx_count = 0;
|
||||
#endif
|
||||
struct tipc_msg *msg = buf_msg(buf);
|
||||
struct node* node = tipc_node_find(msg_prevnode(msg));
|
||||
struct tipc_node* node = tipc_node_find(msg_prevnode(msg));
|
||||
u32 next_in;
|
||||
u32 seqno;
|
||||
struct sk_buff *deferred;
|
||||
@ -538,7 +538,7 @@ u32 tipc_bclink_get_last_sent(void)
|
||||
return last_sent;
|
||||
}
|
||||
|
||||
u32 tipc_bclink_acks_missing(struct node *n_ptr)
|
||||
u32 tipc_bclink_acks_missing(struct tipc_node *n_ptr)
|
||||
{
|
||||
return (n_ptr->bclink.supported &&
|
||||
(tipc_bclink_get_last_sent() != n_ptr->bclink.acked));
|
||||
|
@ -41,12 +41,12 @@
|
||||
#define WSIZE 32
|
||||
|
||||
/**
|
||||
* struct node_map - set of node identifiers
|
||||
* struct tipc_node_map - set of node identifiers
|
||||
* @count: # of nodes in set
|
||||
* @map: bitmap of node identifiers that are in the set
|
||||
*/
|
||||
|
||||
struct node_map {
|
||||
struct tipc_node_map {
|
||||
u32 count;
|
||||
u32 map[MAX_NODES / WSIZE];
|
||||
};
|
||||
@ -68,7 +68,7 @@ struct port_list {
|
||||
};
|
||||
|
||||
|
||||
struct node;
|
||||
struct tipc_node;
|
||||
|
||||
extern char tipc_bclink_name[];
|
||||
|
||||
@ -77,7 +77,7 @@ extern char tipc_bclink_name[];
|
||||
* nmap_add - add a node to a node map
|
||||
*/
|
||||
|
||||
static inline void tipc_nmap_add(struct node_map *nm_ptr, u32 node)
|
||||
static inline void tipc_nmap_add(struct tipc_node_map *nm_ptr, u32 node)
|
||||
{
|
||||
int n = tipc_node(node);
|
||||
int w = n / WSIZE;
|
||||
@ -93,7 +93,7 @@ static inline void tipc_nmap_add(struct node_map *nm_ptr, u32 node)
|
||||
* nmap_remove - remove a node from a node map
|
||||
*/
|
||||
|
||||
static inline void tipc_nmap_remove(struct node_map *nm_ptr, u32 node)
|
||||
static inline void tipc_nmap_remove(struct tipc_node_map *nm_ptr, u32 node)
|
||||
{
|
||||
int n = tipc_node(node);
|
||||
int w = n / WSIZE;
|
||||
@ -109,7 +109,7 @@ static inline void tipc_nmap_remove(struct node_map *nm_ptr, u32 node)
|
||||
* nmap_equal - test for equality of node maps
|
||||
*/
|
||||
|
||||
static inline int tipc_nmap_equal(struct node_map *nm_a, struct node_map *nm_b)
|
||||
static inline int tipc_nmap_equal(struct tipc_node_map *nm_a, struct tipc_node_map *nm_b)
|
||||
{
|
||||
return !memcmp(nm_a, nm_b, sizeof(*nm_a));
|
||||
}
|
||||
@ -121,8 +121,8 @@ static inline int tipc_nmap_equal(struct node_map *nm_a, struct node_map *nm_b)
|
||||
* @nm_diff: output node map A-B (i.e. nodes of A that are not in B)
|
||||
*/
|
||||
|
||||
static inline void tipc_nmap_diff(struct node_map *nm_a, struct node_map *nm_b,
|
||||
struct node_map *nm_diff)
|
||||
static inline void tipc_nmap_diff(struct tipc_node_map *nm_a, struct tipc_node_map *nm_b,
|
||||
struct tipc_node_map *nm_diff)
|
||||
{
|
||||
int stop = sizeof(nm_a->map) / sizeof(u32);
|
||||
int w;
|
||||
@ -195,12 +195,12 @@ static inline void tipc_port_list_free(struct port_list *pl_ptr)
|
||||
|
||||
int tipc_bclink_init(void);
|
||||
void tipc_bclink_stop(void);
|
||||
void tipc_bclink_acknowledge(struct node *n_ptr, u32 acked);
|
||||
void tipc_bclink_acknowledge(struct tipc_node *n_ptr, u32 acked);
|
||||
int tipc_bclink_send_msg(struct sk_buff *buf);
|
||||
void tipc_bclink_recv_pkt(struct sk_buff *buf);
|
||||
u32 tipc_bclink_get_last_sent(void);
|
||||
u32 tipc_bclink_acks_missing(struct node *n_ptr);
|
||||
void tipc_bclink_check_gap(struct node *n_ptr, u32 seqno);
|
||||
u32 tipc_bclink_acks_missing(struct tipc_node *n_ptr);
|
||||
void tipc_bclink_check_gap(struct tipc_node *n_ptr, u32 seqno);
|
||||
int tipc_bclink_stats(char *stats_buf, const u32 buf_size);
|
||||
int tipc_bclink_reset_stats(void);
|
||||
int tipc_bclink_set_queue_limits(u32 limit);
|
||||
|
@ -599,7 +599,7 @@ int tipc_block_bearer(const char *name)
|
||||
spin_lock_bh(&b_ptr->publ.lock);
|
||||
b_ptr->publ.blocked = 1;
|
||||
list_for_each_entry_safe(l_ptr, temp_l_ptr, &b_ptr->links, link_list) {
|
||||
struct node *n_ptr = l_ptr->owner;
|
||||
struct tipc_node *n_ptr = l_ptr->owner;
|
||||
|
||||
spin_lock_bh(&n_ptr->lock);
|
||||
tipc_link_reset(l_ptr);
|
||||
|
@ -104,7 +104,7 @@ struct bearer {
|
||||
u32 continue_count;
|
||||
int active;
|
||||
char net_plane;
|
||||
struct node_map nodes;
|
||||
struct tipc_node_map nodes;
|
||||
};
|
||||
|
||||
struct bearer_name {
|
||||
|
@ -48,8 +48,8 @@ static void tipc_cltr_multicast(struct cluster *c_ptr, struct sk_buff *buf,
|
||||
u32 lower, u32 upper);
|
||||
static struct sk_buff *tipc_cltr_prepare_routing_msg(u32 data_size, u32 dest);
|
||||
|
||||
struct node **tipc_local_nodes = NULL;
|
||||
struct node_map tipc_cltr_bcast_nodes = {0,{0,}};
|
||||
struct tipc_node **tipc_local_nodes = NULL;
|
||||
struct tipc_node_map tipc_cltr_bcast_nodes = {0,{0,}};
|
||||
u32 tipc_highest_allowed_slave = 0;
|
||||
|
||||
struct cluster *tipc_cltr_create(u32 addr)
|
||||
@ -115,7 +115,7 @@ void tipc_cltr_delete(struct cluster *c_ptr)
|
||||
|
||||
u32 tipc_cltr_next_node(struct cluster *c_ptr, u32 addr)
|
||||
{
|
||||
struct node *n_ptr;
|
||||
struct tipc_node *n_ptr;
|
||||
u32 n_num = tipc_node(addr) + 1;
|
||||
|
||||
if (!c_ptr)
|
||||
@ -133,7 +133,7 @@ u32 tipc_cltr_next_node(struct cluster *c_ptr, u32 addr)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void tipc_cltr_attach_node(struct cluster *c_ptr, struct node *n_ptr)
|
||||
void tipc_cltr_attach_node(struct cluster *c_ptr, struct tipc_node *n_ptr)
|
||||
{
|
||||
u32 n_num = tipc_node(n_ptr->addr);
|
||||
u32 max_n_num = tipc_max_nodes;
|
||||
@ -196,7 +196,7 @@ u32 tipc_cltr_select_router(struct cluster *c_ptr, u32 ref)
|
||||
* Uses deterministic and fair algorithm.
|
||||
*/
|
||||
|
||||
struct node *tipc_cltr_select_node(struct cluster *c_ptr, u32 selector)
|
||||
struct tipc_node *tipc_cltr_select_node(struct cluster *c_ptr, u32 selector)
|
||||
{
|
||||
u32 n_num;
|
||||
u32 mask = tipc_max_nodes;
|
||||
@ -379,7 +379,7 @@ void tipc_cltr_recv_routing_table(struct sk_buff *buf)
|
||||
{
|
||||
struct tipc_msg *msg = buf_msg(buf);
|
||||
struct cluster *c_ptr;
|
||||
struct node *n_ptr;
|
||||
struct tipc_node *n_ptr;
|
||||
unchar *node_table;
|
||||
u32 table_size;
|
||||
u32 router;
|
||||
@ -499,7 +499,7 @@ static void tipc_cltr_multicast(struct cluster *c_ptr, struct sk_buff *buf,
|
||||
u32 lower, u32 upper)
|
||||
{
|
||||
struct sk_buff *buf_copy;
|
||||
struct node *n_ptr;
|
||||
struct tipc_node *n_ptr;
|
||||
u32 n_num;
|
||||
u32 tstop;
|
||||
|
||||
@ -534,7 +534,7 @@ void tipc_cltr_broadcast(struct sk_buff *buf)
|
||||
{
|
||||
struct sk_buff *buf_copy;
|
||||
struct cluster *c_ptr;
|
||||
struct node *n_ptr;
|
||||
struct tipc_node *n_ptr;
|
||||
u32 n_num;
|
||||
u32 tstart;
|
||||
u32 tstop;
|
||||
|
@ -54,24 +54,24 @@
|
||||
struct cluster {
|
||||
u32 addr;
|
||||
struct _zone *owner;
|
||||
struct node **nodes;
|
||||
struct tipc_node **nodes;
|
||||
u32 highest_node;
|
||||
u32 highest_slave;
|
||||
};
|
||||
|
||||
|
||||
extern struct node **tipc_local_nodes;
|
||||
extern struct tipc_node **tipc_local_nodes;
|
||||
extern u32 tipc_highest_allowed_slave;
|
||||
extern struct node_map tipc_cltr_bcast_nodes;
|
||||
extern struct tipc_node_map tipc_cltr_bcast_nodes;
|
||||
|
||||
void tipc_cltr_remove_as_router(struct cluster *c_ptr, u32 router);
|
||||
void tipc_cltr_send_ext_routes(struct cluster *c_ptr, u32 dest);
|
||||
struct node *tipc_cltr_select_node(struct cluster *c_ptr, u32 selector);
|
||||
struct tipc_node *tipc_cltr_select_node(struct cluster *c_ptr, u32 selector);
|
||||
u32 tipc_cltr_select_router(struct cluster *c_ptr, u32 ref);
|
||||
void tipc_cltr_recv_routing_table(struct sk_buff *buf);
|
||||
struct cluster *tipc_cltr_create(u32 addr);
|
||||
void tipc_cltr_delete(struct cluster *c_ptr);
|
||||
void tipc_cltr_attach_node(struct cluster *c_ptr, struct node *n_ptr);
|
||||
void tipc_cltr_attach_node(struct cluster *c_ptr, struct tipc_node *n_ptr);
|
||||
void tipc_cltr_send_slave_routes(struct cluster *c_ptr, u32 dest);
|
||||
void tipc_cltr_broadcast(struct sk_buff *buf);
|
||||
int tipc_cltr_init(void);
|
||||
|
@ -193,7 +193,7 @@ void tipc_disc_recv_msg(struct sk_buff *buf, struct bearer *b_ptr)
|
||||
/* Always accept link here */
|
||||
struct sk_buff *rbuf;
|
||||
struct tipc_media_addr *addr;
|
||||
struct node *n_ptr = tipc_node_find(orig);
|
||||
struct tipc_node *n_ptr = tipc_node_find(orig);
|
||||
int link_fully_up;
|
||||
|
||||
dbg(" in own cluster\n");
|
||||
|
@ -1155,7 +1155,7 @@ int tipc_link_send_buf(struct link *l_ptr, struct sk_buff *buf)
|
||||
int tipc_link_send(struct sk_buff *buf, u32 dest, u32 selector)
|
||||
{
|
||||
struct link *l_ptr;
|
||||
struct node *n_ptr;
|
||||
struct tipc_node *n_ptr;
|
||||
int res = -ELINKCONG;
|
||||
|
||||
read_lock_bh(&tipc_net_lock);
|
||||
@ -1226,7 +1226,7 @@ static int link_send_buf_fast(struct link *l_ptr, struct sk_buff *buf,
|
||||
int tipc_send_buf_fast(struct sk_buff *buf, u32 destnode)
|
||||
{
|
||||
struct link *l_ptr;
|
||||
struct node *n_ptr;
|
||||
struct tipc_node *n_ptr;
|
||||
int res;
|
||||
u32 selector = msg_origport(buf_msg(buf)) & 1;
|
||||
u32 dummy;
|
||||
@ -1270,7 +1270,7 @@ int tipc_link_send_sections_fast(struct port *sender,
|
||||
struct tipc_msg *hdr = &sender->publ.phdr;
|
||||
struct link *l_ptr;
|
||||
struct sk_buff *buf;
|
||||
struct node *node;
|
||||
struct tipc_node *node;
|
||||
int res;
|
||||
u32 selector = msg_origport(hdr) & 1;
|
||||
|
||||
@ -1364,7 +1364,7 @@ static int link_send_sections_long(struct port *sender,
|
||||
u32 destaddr)
|
||||
{
|
||||
struct link *l_ptr;
|
||||
struct node *node;
|
||||
struct tipc_node *node;
|
||||
struct tipc_msg *hdr = &sender->publ.phdr;
|
||||
u32 dsz = msg_data_sz(hdr);
|
||||
u32 max_pkt,fragm_sz,rest;
|
||||
@ -1636,7 +1636,7 @@ void tipc_link_push_queue(struct link *l_ptr)
|
||||
|
||||
static void link_reset_all(unsigned long addr)
|
||||
{
|
||||
struct node *n_ptr;
|
||||
struct tipc_node *n_ptr;
|
||||
char addr_string[16];
|
||||
u32 i;
|
||||
|
||||
@ -1682,7 +1682,7 @@ static void link_retransmit_failure(struct link *l_ptr, struct sk_buff *buf)
|
||||
|
||||
/* Handle failure on broadcast link */
|
||||
|
||||
struct node *n_ptr;
|
||||
struct tipc_node *n_ptr;
|
||||
char addr_string[16];
|
||||
|
||||
tipc_printf(TIPC_OUTPUT, "Msg seq number: %u, ", msg_seqno(msg));
|
||||
@ -1843,7 +1843,7 @@ void tipc_recv_msg(struct sk_buff *head, struct tipc_bearer *tb_ptr)
|
||||
read_lock_bh(&tipc_net_lock);
|
||||
while (head) {
|
||||
struct bearer *b_ptr = (struct bearer *)tb_ptr;
|
||||
struct node *n_ptr;
|
||||
struct tipc_node *n_ptr;
|
||||
struct link *l_ptr;
|
||||
struct sk_buff *crs;
|
||||
struct sk_buff *buf = head;
|
||||
@ -2935,7 +2935,7 @@ void tipc_link_set_queue_limits(struct link *l_ptr, u32 window)
|
||||
* Returns pointer to link (or 0 if invalid link name).
|
||||
*/
|
||||
|
||||
static struct link *link_find_link(const char *name, struct node **node)
|
||||
static struct link *link_find_link(const char *name, struct tipc_node **node)
|
||||
{
|
||||
struct link_name link_name_parts;
|
||||
struct bearer *b_ptr;
|
||||
@ -2965,7 +2965,7 @@ struct sk_buff *tipc_link_cmd_config(const void *req_tlv_area, int req_tlv_space
|
||||
struct tipc_link_config *args;
|
||||
u32 new_value;
|
||||
struct link *l_ptr;
|
||||
struct node *node;
|
||||
struct tipc_node *node;
|
||||
int res;
|
||||
|
||||
if (!TLV_CHECK(req_tlv_area, req_tlv_space, TIPC_TLV_LINK_CONFIG))
|
||||
@ -3043,7 +3043,7 @@ struct sk_buff *tipc_link_cmd_reset_stats(const void *req_tlv_area, int req_tlv_
|
||||
{
|
||||
char *link_name;
|
||||
struct link *l_ptr;
|
||||
struct node *node;
|
||||
struct tipc_node *node;
|
||||
|
||||
if (!TLV_CHECK(req_tlv_area, req_tlv_space, TIPC_TLV_LINK_NAME))
|
||||
return tipc_cfg_reply_error_string(TIPC_CFG_TLV_ERROR);
|
||||
@ -3091,7 +3091,7 @@ static int tipc_link_stats(const char *name, char *buf, const u32 buf_size)
|
||||
{
|
||||
struct print_buf pb;
|
||||
struct link *l_ptr;
|
||||
struct node *node;
|
||||
struct tipc_node *node;
|
||||
char *status;
|
||||
u32 profile_total = 0;
|
||||
|
||||
@ -3207,7 +3207,7 @@ int link_control(const char *name, u32 op, u32 val)
|
||||
int res = -EINVAL;
|
||||
struct link *l_ptr;
|
||||
u32 bearer_id;
|
||||
struct node * node;
|
||||
struct tipc_node * node;
|
||||
u32 a;
|
||||
|
||||
a = link_name2addr(name, &bearer_id);
|
||||
@ -3249,7 +3249,7 @@ int link_control(const char *name, u32 op, u32 val)
|
||||
|
||||
u32 tipc_link_get_max_pkt(u32 dest, u32 selector)
|
||||
{
|
||||
struct node *n_ptr;
|
||||
struct tipc_node *n_ptr;
|
||||
struct link *l_ptr;
|
||||
u32 res = MAX_PKT_DEFAULT;
|
||||
|
||||
|
@ -116,7 +116,7 @@ struct link {
|
||||
char name[TIPC_MAX_LINK_NAME];
|
||||
struct tipc_media_addr media_addr;
|
||||
struct timer_list timer;
|
||||
struct node *owner;
|
||||
struct tipc_node *owner;
|
||||
struct list_head link_list;
|
||||
|
||||
/* Management and link supervision data */
|
||||
|
@ -76,7 +76,7 @@ struct publication {
|
||||
u32 node;
|
||||
u32 ref;
|
||||
u32 key;
|
||||
struct node_subscr subscr;
|
||||
struct tipc_node_subscr subscr;
|
||||
struct list_head local_list;
|
||||
struct list_head pport_list;
|
||||
struct publication *node_list_next;
|
||||
|
@ -118,7 +118,7 @@
|
||||
DEFINE_RWLOCK(tipc_net_lock);
|
||||
struct network tipc_net = { NULL };
|
||||
|
||||
struct node *tipc_net_select_remote_node(u32 addr, u32 ref)
|
||||
struct tipc_node *tipc_net_select_remote_node(u32 addr, u32 ref)
|
||||
{
|
||||
return tipc_zone_select_remote_node(tipc_net.zones[tipc_zone(addr)], addr, ref);
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ extern rwlock_t tipc_net_lock;
|
||||
void tipc_net_remove_as_router(u32 router);
|
||||
void tipc_net_send_external_routes(u32 dest);
|
||||
void tipc_net_route_msg(struct sk_buff *buf);
|
||||
struct node *tipc_net_select_remote_node(u32 addr, u32 ref);
|
||||
struct tipc_node *tipc_net_select_remote_node(u32 addr, u32 ref);
|
||||
u32 tipc_net_select_router(u32 addr, u32 ref);
|
||||
|
||||
int tipc_net_start(u32 addr);
|
||||
|
@ -46,11 +46,11 @@
|
||||
#include "bearer.h"
|
||||
#include "name_distr.h"
|
||||
|
||||
void node_print(struct print_buf *buf, struct node *n_ptr, char *str);
|
||||
static void node_lost_contact(struct node *n_ptr);
|
||||
static void node_established_contact(struct node *n_ptr);
|
||||
void node_print(struct print_buf *buf, struct tipc_node *n_ptr, char *str);
|
||||
static void node_lost_contact(struct tipc_node *n_ptr);
|
||||
static void node_established_contact(struct tipc_node *n_ptr);
|
||||
|
||||
struct node *tipc_nodes = NULL; /* sorted list of nodes within cluster */
|
||||
struct tipc_node *tipc_nodes = NULL; /* sorted list of nodes within cluster */
|
||||
|
||||
static DEFINE_SPINLOCK(node_create_lock);
|
||||
|
||||
@ -66,11 +66,11 @@ u32 tipc_own_tag = 0;
|
||||
* but this is a non-trivial change.)
|
||||
*/
|
||||
|
||||
struct node *tipc_node_create(u32 addr)
|
||||
struct tipc_node *tipc_node_create(u32 addr)
|
||||
{
|
||||
struct cluster *c_ptr;
|
||||
struct node *n_ptr;
|
||||
struct node **curr_node;
|
||||
struct tipc_node *n_ptr;
|
||||
struct tipc_node **curr_node;
|
||||
|
||||
spin_lock_bh(&node_create_lock);
|
||||
|
||||
@ -120,7 +120,7 @@ struct node *tipc_node_create(u32 addr)
|
||||
return n_ptr;
|
||||
}
|
||||
|
||||
void tipc_node_delete(struct node *n_ptr)
|
||||
void tipc_node_delete(struct tipc_node *n_ptr)
|
||||
{
|
||||
if (!n_ptr)
|
||||
return;
|
||||
@ -146,7 +146,7 @@ void tipc_node_delete(struct node *n_ptr)
|
||||
* Link becomes active (alone or shared) or standby, depending on its priority.
|
||||
*/
|
||||
|
||||
void tipc_node_link_up(struct node *n_ptr, struct link *l_ptr)
|
||||
void tipc_node_link_up(struct tipc_node *n_ptr, struct link *l_ptr)
|
||||
{
|
||||
struct link **active = &n_ptr->active_links[0];
|
||||
|
||||
@ -180,7 +180,7 @@ void tipc_node_link_up(struct node *n_ptr, struct link *l_ptr)
|
||||
* node_select_active_links - select active link
|
||||
*/
|
||||
|
||||
static void node_select_active_links(struct node *n_ptr)
|
||||
static void node_select_active_links(struct tipc_node *n_ptr)
|
||||
{
|
||||
struct link **active = &n_ptr->active_links[0];
|
||||
u32 i;
|
||||
@ -208,7 +208,7 @@ static void node_select_active_links(struct node *n_ptr)
|
||||
* tipc_node_link_down - handle loss of link
|
||||
*/
|
||||
|
||||
void tipc_node_link_down(struct node *n_ptr, struct link *l_ptr)
|
||||
void tipc_node_link_down(struct tipc_node *n_ptr, struct link *l_ptr)
|
||||
{
|
||||
struct link **active;
|
||||
|
||||
@ -235,30 +235,30 @@ void tipc_node_link_down(struct node *n_ptr, struct link *l_ptr)
|
||||
node_lost_contact(n_ptr);
|
||||
}
|
||||
|
||||
int tipc_node_has_active_links(struct node *n_ptr)
|
||||
int tipc_node_has_active_links(struct tipc_node *n_ptr)
|
||||
{
|
||||
return (n_ptr &&
|
||||
((n_ptr->active_links[0]) || (n_ptr->active_links[1])));
|
||||
}
|
||||
|
||||
int tipc_node_has_redundant_links(struct node *n_ptr)
|
||||
int tipc_node_has_redundant_links(struct tipc_node *n_ptr)
|
||||
{
|
||||
return (n_ptr->working_links > 1);
|
||||
}
|
||||
|
||||
static int tipc_node_has_active_routes(struct node *n_ptr)
|
||||
static int tipc_node_has_active_routes(struct tipc_node *n_ptr)
|
||||
{
|
||||
return (n_ptr && (n_ptr->last_router >= 0));
|
||||
}
|
||||
|
||||
int tipc_node_is_up(struct node *n_ptr)
|
||||
int tipc_node_is_up(struct tipc_node *n_ptr)
|
||||
{
|
||||
return (tipc_node_has_active_links(n_ptr) || tipc_node_has_active_routes(n_ptr));
|
||||
}
|
||||
|
||||
struct node *tipc_node_attach_link(struct link *l_ptr)
|
||||
struct tipc_node *tipc_node_attach_link(struct link *l_ptr)
|
||||
{
|
||||
struct node *n_ptr = tipc_node_find(l_ptr->addr);
|
||||
struct tipc_node *n_ptr = tipc_node_find(l_ptr->addr);
|
||||
|
||||
if (!n_ptr)
|
||||
n_ptr = tipc_node_create(l_ptr->addr);
|
||||
@ -285,7 +285,7 @@ struct node *tipc_node_attach_link(struct link *l_ptr)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void tipc_node_detach_link(struct node *n_ptr, struct link *l_ptr)
|
||||
void tipc_node_detach_link(struct tipc_node *n_ptr, struct link *l_ptr)
|
||||
{
|
||||
n_ptr->links[l_ptr->b_ptr->identity] = NULL;
|
||||
tipc_net.zones[tipc_zone(l_ptr->addr)]->links--;
|
||||
@ -338,7 +338,7 @@ void tipc_node_detach_link(struct node *n_ptr, struct link *l_ptr)
|
||||
*
|
||||
*/
|
||||
|
||||
static void node_established_contact(struct node *n_ptr)
|
||||
static void node_established_contact(struct tipc_node *n_ptr)
|
||||
{
|
||||
struct cluster *c_ptr;
|
||||
|
||||
@ -384,10 +384,10 @@ static void node_established_contact(struct node *n_ptr)
|
||||
tipc_highest_allowed_slave);
|
||||
}
|
||||
|
||||
static void node_lost_contact(struct node *n_ptr)
|
||||
static void node_lost_contact(struct tipc_node *n_ptr)
|
||||
{
|
||||
struct cluster *c_ptr;
|
||||
struct node_subscr *ns, *tns;
|
||||
struct tipc_node_subscr *ns, *tns;
|
||||
char addr_string[16];
|
||||
u32 i;
|
||||
|
||||
@ -466,9 +466,9 @@ static void node_lost_contact(struct node *n_ptr)
|
||||
* Called by when cluster local lookup has failed.
|
||||
*/
|
||||
|
||||
struct node *tipc_node_select_next_hop(u32 addr, u32 selector)
|
||||
struct tipc_node *tipc_node_select_next_hop(u32 addr, u32 selector)
|
||||
{
|
||||
struct node *n_ptr;
|
||||
struct tipc_node *n_ptr;
|
||||
u32 router_addr;
|
||||
|
||||
if (!tipc_addr_domain_valid(addr))
|
||||
@ -513,7 +513,7 @@ struct node *tipc_node_select_next_hop(u32 addr, u32 selector)
|
||||
* Uses a deterministic and fair algorithm for selecting router node.
|
||||
*/
|
||||
|
||||
u32 tipc_node_select_router(struct node *n_ptr, u32 ref)
|
||||
u32 tipc_node_select_router(struct tipc_node *n_ptr, u32 ref)
|
||||
{
|
||||
u32 ulim;
|
||||
u32 mask;
|
||||
@ -551,7 +551,7 @@ u32 tipc_node_select_router(struct node *n_ptr, u32 ref)
|
||||
return tipc_addr(own_zone(), own_cluster(), r);
|
||||
}
|
||||
|
||||
void tipc_node_add_router(struct node *n_ptr, u32 router)
|
||||
void tipc_node_add_router(struct tipc_node *n_ptr, u32 router)
|
||||
{
|
||||
u32 r_num = tipc_node(router);
|
||||
|
||||
@ -562,7 +562,7 @@ void tipc_node_add_router(struct node *n_ptr, u32 router)
|
||||
!n_ptr->routers[n_ptr->last_router]);
|
||||
}
|
||||
|
||||
void tipc_node_remove_router(struct node *n_ptr, u32 router)
|
||||
void tipc_node_remove_router(struct tipc_node *n_ptr, u32 router)
|
||||
{
|
||||
u32 r_num = tipc_node(router);
|
||||
|
||||
@ -580,7 +580,7 @@ void tipc_node_remove_router(struct node *n_ptr, u32 router)
|
||||
}
|
||||
|
||||
#if 0
|
||||
void node_print(struct print_buf *buf, struct node *n_ptr, char *str)
|
||||
void node_print(struct print_buf *buf, struct tipc_node *n_ptr, char *str)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
@ -597,7 +597,7 @@ void node_print(struct print_buf *buf, struct node *n_ptr, char *str)
|
||||
|
||||
u32 tipc_available_nodes(const u32 domain)
|
||||
{
|
||||
struct node *n_ptr;
|
||||
struct tipc_node *n_ptr;
|
||||
u32 cnt = 0;
|
||||
|
||||
read_lock_bh(&tipc_net_lock);
|
||||
@ -615,7 +615,7 @@ struct sk_buff *tipc_node_get_nodes(const void *req_tlv_area, int req_tlv_space)
|
||||
{
|
||||
u32 domain;
|
||||
struct sk_buff *buf;
|
||||
struct node *n_ptr;
|
||||
struct tipc_node *n_ptr;
|
||||
struct tipc_node_info node_info;
|
||||
u32 payload_size;
|
||||
|
||||
@ -667,7 +667,7 @@ struct sk_buff *tipc_node_get_links(const void *req_tlv_area, int req_tlv_space)
|
||||
{
|
||||
u32 domain;
|
||||
struct sk_buff *buf;
|
||||
struct node *n_ptr;
|
||||
struct tipc_node *n_ptr;
|
||||
struct tipc_link_info link_info;
|
||||
u32 payload_size;
|
||||
|
||||
|
@ -43,7 +43,7 @@
|
||||
#include "bearer.h"
|
||||
|
||||
/**
|
||||
* struct node - TIPC node structure
|
||||
* struct tipc_node - TIPC node structure
|
||||
* @addr: network address of node
|
||||
* @lock: spinlock governing access to structure
|
||||
* @owner: pointer to cluster that node belongs to
|
||||
@ -68,11 +68,11 @@
|
||||
* @defragm: list of partially reassembled b'cast message fragments from node
|
||||
*/
|
||||
|
||||
struct node {
|
||||
struct tipc_node {
|
||||
u32 addr;
|
||||
spinlock_t lock;
|
||||
struct cluster *owner;
|
||||
struct node *next;
|
||||
struct tipc_node *next;
|
||||
struct list_head nsub;
|
||||
struct link *active_links[2];
|
||||
struct link *links[MAX_BEARERS];
|
||||
@ -94,26 +94,26 @@ struct node {
|
||||
} bclink;
|
||||
};
|
||||
|
||||
extern struct node *tipc_nodes;
|
||||
extern struct tipc_node *tipc_nodes;
|
||||
extern u32 tipc_own_tag;
|
||||
|
||||
struct node *tipc_node_create(u32 addr);
|
||||
void tipc_node_delete(struct node *n_ptr);
|
||||
struct node *tipc_node_attach_link(struct link *l_ptr);
|
||||
void tipc_node_detach_link(struct node *n_ptr, struct link *l_ptr);
|
||||
void tipc_node_link_down(struct node *n_ptr, struct link *l_ptr);
|
||||
void tipc_node_link_up(struct node *n_ptr, struct link *l_ptr);
|
||||
int tipc_node_has_active_links(struct node *n_ptr);
|
||||
int tipc_node_has_redundant_links(struct node *n_ptr);
|
||||
u32 tipc_node_select_router(struct node *n_ptr, u32 ref);
|
||||
struct node *tipc_node_select_next_hop(u32 addr, u32 selector);
|
||||
int tipc_node_is_up(struct node *n_ptr);
|
||||
void tipc_node_add_router(struct node *n_ptr, u32 router);
|
||||
void tipc_node_remove_router(struct node *n_ptr, u32 router);
|
||||
struct tipc_node *tipc_node_create(u32 addr);
|
||||
void tipc_node_delete(struct tipc_node *n_ptr);
|
||||
struct tipc_node *tipc_node_attach_link(struct link *l_ptr);
|
||||
void tipc_node_detach_link(struct tipc_node *n_ptr, struct link *l_ptr);
|
||||
void tipc_node_link_down(struct tipc_node *n_ptr, struct link *l_ptr);
|
||||
void tipc_node_link_up(struct tipc_node *n_ptr, struct link *l_ptr);
|
||||
int tipc_node_has_active_links(struct tipc_node *n_ptr);
|
||||
int tipc_node_has_redundant_links(struct tipc_node *n_ptr);
|
||||
u32 tipc_node_select_router(struct tipc_node *n_ptr, u32 ref);
|
||||
struct tipc_node *tipc_node_select_next_hop(u32 addr, u32 selector);
|
||||
int tipc_node_is_up(struct tipc_node *n_ptr);
|
||||
void tipc_node_add_router(struct tipc_node *n_ptr, u32 router);
|
||||
void tipc_node_remove_router(struct tipc_node *n_ptr, u32 router);
|
||||
struct sk_buff *tipc_node_get_links(const void *req_tlv_area, int req_tlv_space);
|
||||
struct sk_buff *tipc_node_get_nodes(const void *req_tlv_area, int req_tlv_space);
|
||||
|
||||
static inline struct node *tipc_node_find(u32 addr)
|
||||
static inline struct tipc_node *tipc_node_find(u32 addr)
|
||||
{
|
||||
if (likely(in_own_cluster(addr)))
|
||||
return tipc_local_nodes[tipc_node(addr)];
|
||||
@ -126,19 +126,19 @@ static inline struct node *tipc_node_find(u32 addr)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline struct node *tipc_node_select(u32 addr, u32 selector)
|
||||
static inline struct tipc_node *tipc_node_select(u32 addr, u32 selector)
|
||||
{
|
||||
if (likely(in_own_cluster(addr)))
|
||||
return tipc_local_nodes[tipc_node(addr)];
|
||||
return tipc_node_select_next_hop(addr, selector);
|
||||
}
|
||||
|
||||
static inline void tipc_node_lock(struct node *n_ptr)
|
||||
static inline void tipc_node_lock(struct tipc_node *n_ptr)
|
||||
{
|
||||
spin_lock_bh(&n_ptr->lock);
|
||||
}
|
||||
|
||||
static inline void tipc_node_unlock(struct node *n_ptr)
|
||||
static inline void tipc_node_unlock(struct tipc_node *n_ptr)
|
||||
{
|
||||
spin_unlock_bh(&n_ptr->lock);
|
||||
}
|
||||
|
@ -44,7 +44,7 @@
|
||||
* tipc_nodesub_subscribe - create "node down" subscription for specified node
|
||||
*/
|
||||
|
||||
void tipc_nodesub_subscribe(struct node_subscr *node_sub, u32 addr,
|
||||
void tipc_nodesub_subscribe(struct tipc_node_subscr *node_sub, u32 addr,
|
||||
void *usr_handle, net_ev_handler handle_down)
|
||||
{
|
||||
if (addr == tipc_own_addr) {
|
||||
@ -69,7 +69,7 @@ void tipc_nodesub_subscribe(struct node_subscr *node_sub, u32 addr,
|
||||
* tipc_nodesub_unsubscribe - cancel "node down" subscription (if any)
|
||||
*/
|
||||
|
||||
void tipc_nodesub_unsubscribe(struct node_subscr *node_sub)
|
||||
void tipc_nodesub_unsubscribe(struct tipc_node_subscr *node_sub)
|
||||
{
|
||||
if (!node_sub->node)
|
||||
return;
|
||||
|
@ -42,22 +42,22 @@
|
||||
typedef void (*net_ev_handler) (void *usr_handle);
|
||||
|
||||
/**
|
||||
* struct node_subscr - "node down" subscription entry
|
||||
* struct tipc_node_subscr - "node down" subscription entry
|
||||
* @node: ptr to node structure of interest (or NULL, if none)
|
||||
* @handle_node_down: routine to invoke when node fails
|
||||
* @usr_handle: argument to pass to routine when node fails
|
||||
* @nodesub_list: adjacent entries in list of subscriptions for the node
|
||||
*/
|
||||
|
||||
struct node_subscr {
|
||||
struct node *node;
|
||||
struct tipc_node_subscr {
|
||||
struct tipc_node *node;
|
||||
net_ev_handler handle_node_down;
|
||||
void *usr_handle;
|
||||
struct list_head nodesub_list;
|
||||
};
|
||||
|
||||
void tipc_nodesub_subscribe(struct node_subscr *node_sub, u32 addr,
|
||||
void tipc_nodesub_subscribe(struct tipc_node_subscr *node_sub, u32 addr,
|
||||
void *usr_handle, net_ev_handler handle_down);
|
||||
void tipc_nodesub_unsubscribe(struct node_subscr *node_sub);
|
||||
void tipc_nodesub_unsubscribe(struct tipc_node_subscr *node_sub);
|
||||
|
||||
#endif
|
||||
|
@ -105,7 +105,7 @@ struct port {
|
||||
u32 probing_interval;
|
||||
u32 last_in_seqno;
|
||||
struct timer_list timer;
|
||||
struct node_subscr subscription;
|
||||
struct tipc_node_subscr subscription;
|
||||
};
|
||||
|
||||
extern spinlock_t tipc_port_list_lock;
|
||||
|
@ -111,10 +111,10 @@ void tipc_zone_send_external_routes(struct _zone *z_ptr, u32 dest)
|
||||
}
|
||||
}
|
||||
|
||||
struct node *tipc_zone_select_remote_node(struct _zone *z_ptr, u32 addr, u32 ref)
|
||||
struct tipc_node *tipc_zone_select_remote_node(struct _zone *z_ptr, u32 addr, u32 ref)
|
||||
{
|
||||
struct cluster *c_ptr;
|
||||
struct node *n_ptr;
|
||||
struct tipc_node *n_ptr;
|
||||
u32 c_num;
|
||||
|
||||
if (!z_ptr)
|
||||
|
@ -54,7 +54,7 @@ struct _zone {
|
||||
u32 links;
|
||||
};
|
||||
|
||||
struct node *tipc_zone_select_remote_node(struct _zone *z_ptr, u32 addr, u32 ref);
|
||||
struct tipc_node *tipc_zone_select_remote_node(struct _zone *z_ptr, u32 addr, u32 ref);
|
||||
u32 tipc_zone_select_router(struct _zone *z_ptr, u32 addr, u32 ref);
|
||||
void tipc_zone_remove_as_router(struct _zone *z_ptr, u32 router);
|
||||
void tipc_zone_send_external_routes(struct _zone *z_ptr, u32 dest);
|
||||
|
@ -811,11 +811,12 @@ static int string_to_context_struct(struct policydb *pol,
|
||||
/* Check the validity of the new context. */
|
||||
if (!policydb_context_isvalid(pol, ctx)) {
|
||||
rc = -EINVAL;
|
||||
context_destroy(ctx);
|
||||
goto out;
|
||||
}
|
||||
rc = 0;
|
||||
out:
|
||||
if (rc)
|
||||
context_destroy(ctx);
|
||||
return rc;
|
||||
}
|
||||
|
||||
@ -868,8 +869,7 @@ static int security_context_to_sid_core(const char *scontext, u32 scontext_len,
|
||||
} else if (rc)
|
||||
goto out;
|
||||
rc = sidtab_context_to_sid(&sidtab, &context, sid);
|
||||
if (rc)
|
||||
context_destroy(&context);
|
||||
context_destroy(&context);
|
||||
out:
|
||||
read_unlock(&policy_rwlock);
|
||||
kfree(scontext2);
|
||||
|
Loading…
Reference in New Issue
Block a user