Netdev List
 help / color / mirror / Atom feed
* Re: [PATCH 0/8] netpoll: various bugfixes
From: David S. Miller @ 2005-08-12  2:41 UTC (permalink / raw)
  To: mpm; +Cc: akpm, ak, jmoyer, netdev, linux-kernel, mingo, john.ronciak,
	rostedt
In-Reply-To: <1.502409567@selenic.com>

From: Matt Mackall <mpm@selenic.com>
Date: Thu, 11 Aug 2005 21:18:28 -0500

> This patch series cleans up a few outstanding bugs in netpoll:
> 
> - two bugfixes from Jeff Moyer's netpoll bonding
> - a tweak to e1000's netpoll stub
> - timeout handling for e1000 with carrier loss
> - prefilling SKBs at init
> - a fix-up for a race discovered in initialization
> - an unused variable warning
> 
> This patch set was tested over repeated rebooting with both tg3 and
> e1000 and random cable disconnection, with and without SMP and
> preempt. Please apply.

All applied, thanks a lot for putting this patch set together.

I'll push this to Linus after some smoke testing.

^ permalink raw reply

* URGENT
From: Mrs.Wilson @ 2005-08-12  2:36 UTC (permalink / raw)
  To: netdev

[-- Attachment #1: Type: text/plain, Size: 1924 bytes --]

Hello,

My name is Mrs.Jennifer Wilson I am a dying woman who had decided to donate what I have to you. I am 59 years old and was diagnosed for cancer about 2 years ago,immediately after the death of my husband, who had left me everything he worked for.

I have been touched by God to donate from what I have inherited from my late husband to the you for the good work of God,rather than allow my relatives to use my husband's hard earned funds ungodly.I have asked God to forgive me all my sins and i believe he has because He is a merciful
God. I will be going in for an operation,and i pray that i survive the operation.

I have decided to WILL/donate the sum of $1,500,000(One million five hundred thousand dollars) to you for the good work of the lord, and to help the motherless,less privileged and also for the assistance of the widows.

At the moment I cannot take any telephone calls, due to the fact that my relatives are around me and i have been restricted by my doctor from taking telephone calls because i deserve all thee rest i can get.Presently,I have informed my lawyer about my decision in WILLING this fund to you.

I wish you all the best and may the good Lord bless you abundantly, and please use the funds well and always extend the good work to others. Kindly Contact my lawyer through this email address ( brownwalteresq@netscape.net ) or call him (+44-795-638-4674) if you are interested,so that he can arrange the release of the funds ($1,500,000.00) to you.My lawyer's name is Brown Walter.

I know I have never met you but I have been directed to do this by God,and i hope you act sincerely.

NB: I will appreciate your utmost confidentiality in this matter until the task is accomplished,as I don't want anything that will Jeopardize my last wish, due to the fact that i do not want relatives or family members standing in the way of my last wish.

Love,
Jennifer Wilson

  

^ permalink raw reply

* $$$ Áö±ßÁö±ßÇÑ ÄÚ°ñÀÌ¢Æ Äð½ºÅ¾ ¢Æ À¸·ÎÀáÀç¿ì°Ù½À´Ï´Ù.!!!
From: Äð½ºÅ¾ @ 2005-08-12  2:31 UTC (permalink / raw)
  To: netdev

[-- Attachment #1: Type: text/html, Size: 1364 bytes --]

^ permalink raw reply

* ù ÀÚ°ÝÁõÀ» Àâ¾Æ¶ó~±¹°¡ ±â¼úÀÚ°ÝÁ¦µµÈ®Á¤½ºÆ÷Ã÷°æ¿µ°ü¸®»ç
From: ½ºÆ÷Ã÷°æ¿µ°ü¸®»ç @ 2005-08-12  2:30 UTC (permalink / raw)
  To: cvs

[-- Attachment #1: Type: text/html, Size: 2023 bytes --]

^ permalink raw reply

* Çѹø¿¡ µÎ°¡ÁöÀÚ°ÝÁõ[»çȸº¹Áö»ç+°¡Á¤°ü¸®»çÀÚ°ÝÁõ](¹«½ÃÇèÀüÇü+100%Ãë¾÷)Ãëµæ ±âȸ !!
From: Çѹø¿¡ µÎ°¡Áö ÀÚ°ÝÁõ(¹«½ÃÇèÀüÇü+100%Ãë¾÷) @ 2005-08-12  2:26 UTC (permalink / raw)
  To: majordomo; +Cc: netdev, cvs, linux-xfs, devfs, kdb, debian-mips

[-- Attachment #1: Type: text/html, Size: 1198 bytes --]

^ permalink raw reply

* [PATCH 8/8] netpoll: remove unused variable
From: Matt Mackall @ 2005-08-12  2:19 UTC (permalink / raw)
  To: Andrew Morton, David S. Miller
  Cc: ak, Jeff Moyer, netdev, linux-kernel, mingo, john.ronciak,
	rostedt
In-Reply-To: <8.502409567@selenic.com>

Remove unused variable

Signed-off-by: Matt Mackall <mpm@selenic.com>

Index: l/net/core/netpoll.c
===================================================================
--- l.orig/net/core/netpoll.c	2005-08-11 01:32:01.000000000 -0500
+++ l/net/core/netpoll.c	2005-08-11 01:49:37.000000000 -0500
@@ -356,7 +356,6 @@ static void arp_reply(struct sk_buff *sk
 	unsigned char *arp_ptr;
 	int size, type = ARPOP_REPLY, ptype = ETH_P_ARP;
 	u32 sip, tip;
-	unsigned long flags;
 	struct sk_buff *send_skb;
 	struct netpoll *np = NULL;
 

^ permalink raw reply

* [PATCH 7/8] netpoll: fix initialization/NAPI race
From: Matt Mackall @ 2005-08-12  2:19 UTC (permalink / raw)
  To: Andrew Morton, David S. Miller
  Cc: ak, Jeff Moyer, netdev, linux-kernel, mingo, john.ronciak,
	rostedt
In-Reply-To: <7.502409567@selenic.com>

This fixes a race during initialization with the NAPI softirq
processing by using an RCU approach.

This race was discovered when refill_skbs() was added to
the setup code.

Signed-off-by: Matt Mackall <mpm@selenic.com>

Index: l/net/core/netpoll.c
===================================================================
--- l.orig/net/core/netpoll.c	2005-08-09 00:56:23.000000000 -0500
+++ l/net/core/netpoll.c	2005-08-11 01:50:24.000000000 -0500
@@ -731,6 +731,9 @@ int netpoll_setup(struct netpoll *np)
 	/* last thing to do is link it to the net device structure */
 	ndev->npinfo = npinfo;
 
+	/* avoid racing with NAPI reading npinfo */
+	synchronize_rcu();
+
 	return 0;
 
  release:
Index: l/include/linux/netpoll.h
===================================================================
--- l.orig/include/linux/netpoll.h	2005-08-09 00:56:23.000000000 -0500
+++ l/include/linux/netpoll.h	2005-08-11 01:33:42.000000000 -0500
@@ -9,6 +9,7 @@
 
 #include <linux/netdevice.h>
 #include <linux/interrupt.h>
+#include <linux/rcupdate.h>
 #include <linux/list.h>
 
 struct netpoll;
@@ -61,25 +62,31 @@ static inline int netpoll_rx(struct sk_b
 	return ret;
 }
 
-static inline void netpoll_poll_lock(struct net_device *dev)
+static inline void *netpoll_poll_lock(struct net_device *dev)
 {
+	rcu_read_lock(); /* deal with race on ->npinfo */
 	if (dev->npinfo) {
 		spin_lock(&dev->npinfo->poll_lock);
 		dev->npinfo->poll_owner = smp_processor_id();
+		return dev->npinfo;
 	}
+	return NULL;
 }
 
-static inline void netpoll_poll_unlock(struct net_device *dev)
+static inline void netpoll_poll_unlock(void *have)
 {
-	if (dev->npinfo) {
-		dev->npinfo->poll_owner = -1;
-		spin_unlock(&dev->npinfo->poll_lock);
+	struct netpoll_info *npi = have;
+
+	if (npi) {
+		npi->poll_owner = -1;
+		spin_unlock(&npi->poll_lock);
 	}
+	rcu_read_unlock();
 }
 
 #else
 #define netpoll_rx(a) 0
-#define netpoll_poll_lock(a)
+#define netpoll_poll_lock(a) 0
 #define netpoll_poll_unlock(a)
 #endif
 
Index: l/net/core/dev.c
===================================================================
--- l.orig/net/core/dev.c	2005-08-09 00:56:23.000000000 -0500
+++ l/net/core/dev.c	2005-08-11 01:34:08.000000000 -0500
@@ -1696,7 +1696,8 @@ static void net_rx_action(struct softirq
 	struct softnet_data *queue = &__get_cpu_var(softnet_data);
 	unsigned long start_time = jiffies;
 	int budget = netdev_budget;
-	
+	void *have;
+
 	local_irq_disable();
 
 	while (!list_empty(&queue->poll_list)) {
@@ -1709,10 +1710,10 @@ static void net_rx_action(struct softirq
 
 		dev = list_entry(queue->poll_list.next,
 				 struct net_device, poll_list);
-		netpoll_poll_lock(dev);
+		have = netpoll_poll_lock(dev);
 
 		if (dev->quota <= 0 || dev->poll(dev, &budget)) {
-			netpoll_poll_unlock(dev);
+			netpoll_poll_unlock(have);
 			local_irq_disable();
 			list_del(&dev->poll_list);
 			list_add_tail(&dev->poll_list, &queue->poll_list);
@@ -1721,7 +1722,7 @@ static void net_rx_action(struct softirq
 			else
 				dev->quota = dev->weight;
 		} else {
-			netpoll_poll_unlock(dev);
+			netpoll_poll_unlock(have);
 			dev_put(dev);
 			local_irq_disable();
 		}

^ permalink raw reply

* [PATCH 6/8] netpoll: pre-fill skb pool
From: Matt Mackall @ 2005-08-12  2:19 UTC (permalink / raw)
  To: Andrew Morton, David S. Miller
  Cc: ak, Jeff Moyer, netdev, linux-kernel, mingo, john.ronciak,
	rostedt
In-Reply-To: <6.502409567@selenic.com>

we could do one thing (see the patch below): i think it would be useful 
to fill up the netlogging skb queue straight at initialization time.  
Especially if netpoll is used for dumping alone, the system might not be 
in a situation to fill up the queue at the point of crash, so better be 
a bit more prepared and keep the pipeline filled.

	Ingo

Signed-off-by: Ingo Molnar <mingo@elte.hu>

I've modified this to be called earlier - mpm

Signed-off-by: Matt Mackall <mpm@selenic.com>

Index: l/net/core/netpoll.c
===================================================================
--- l.orig/net/core/netpoll.c	2005-08-08 23:00:48.000000000 -0500
+++ l/net/core/netpoll.c	2005-08-11 01:50:31.000000000 -0500
@@ -724,6 +724,10 @@ int netpoll_setup(struct netpoll *np)
 		npinfo->rx_np = np;
 		spin_unlock_irqrestore(&npinfo->rx_lock, flags);
 	}
+
+	/* fill up the skb queue */
+	refill_skbs();
+
 	/* last thing to do is link it to the net device structure */
 	ndev->npinfo = npinfo;
 

^ permalink raw reply

* [PATCH 4/8] netpoll: netpoll_send_skb simplify
From: Matt Mackall @ 2005-08-12  2:19 UTC (permalink / raw)
  To: Andrew Morton, David S. Miller
  Cc: ak, Jeff Moyer, netdev, linux-kernel, mingo, john.ronciak,
	rostedt
In-Reply-To: <4.502409567@selenic.com>

Minor netpoll_send_skb restructuring

Restructure to avoid confusing goto and move some bits out of the
retry loop.

Signed-off-by: Matt Mackall <mpm@selenic.com>

Index: l/net/core/netpoll.c
===================================================================
--- l.orig/net/core/netpoll.c	2005-08-07 15:15:48.000000000 -0500
+++ l/net/core/netpoll.c	2005-08-07 16:59:27.000000000 -0500
@@ -248,14 +248,14 @@ static void netpoll_send_skb(struct netp
 	int status;
 	struct netpoll_info *npinfo;
 
-repeat:
-	if(!np || !np->dev || !netif_running(np->dev)) {
+	if (!np || !np->dev || !netif_running(np->dev)) {
 		__kfree_skb(skb);
 		return;
 	}
 
-	/* avoid recursion */
 	npinfo = np->dev->npinfo;
+
+	/* avoid recursion */
 	if (npinfo->poll_owner == smp_processor_id() ||
 	    np->dev->xmit_lock_owner == smp_processor_id()) {
 		if (np->drop)
@@ -265,29 +265,31 @@ repeat:
 		return;
 	}
 
-	spin_lock(&np->dev->xmit_lock);
-	np->dev->xmit_lock_owner = smp_processor_id();
+	while (1) {
+		spin_lock(&np->dev->xmit_lock);
+		np->dev->xmit_lock_owner = smp_processor_id();
+
+		/*
+		 * network drivers do not expect to be called if the queue is
+		 * stopped.
+		 */
+		if (netif_queue_stopped(np->dev)) {
+			np->dev->xmit_lock_owner = -1;
+			spin_unlock(&np->dev->xmit_lock);
+			netpoll_poll(np);
+			continue;
+		}
 
-	/*
-	 * network drivers do not expect to be called if the queue is
-	 * stopped.
-	 */
-	if (netif_queue_stopped(np->dev)) {
+		status = np->dev->hard_start_xmit(skb, np->dev);
 		np->dev->xmit_lock_owner = -1;
 		spin_unlock(&np->dev->xmit_lock);
 
-		netpoll_poll(np);
-		goto repeat;
-	}
-
-	status = np->dev->hard_start_xmit(skb, np->dev);
-	np->dev->xmit_lock_owner = -1;
-	spin_unlock(&np->dev->xmit_lock);
+		/* success */
+		if(!status)
+			return;
 
-	/* transmit busy */
-	if(status) {
+		/* transmit busy */
 		netpoll_poll(np);
-		goto repeat;
 	}
 }
 

^ permalink raw reply

* [PATCH 5/8] netpoll: add retry timeout
From: Matt Mackall @ 2005-08-12  2:19 UTC (permalink / raw)
  To: Andrew Morton, David S. Miller
  Cc: ak, Jeff Moyer, netdev, linux-kernel, mingo, john.ronciak,
	rostedt
In-Reply-To: <5.502409567@selenic.com>

Add limited retry logic to netpoll_send_skb

Each time we attempt to send, decrement our per-device retry counter.
On every successful send, we reset the counter. 

We delay 50us between attempts with up to 20000 retries for a total of
1 second. After we've exhausted our retries, subsequent failed
attempts will try only once until reset by success.

Signed-off-by: Matt Mackall <mpm@selenic.com>

Index: lhg/net/core/netpoll.c
===================================================================
--- lhg.orig/net/core/netpoll.c	2005-08-11 16:17:45.000000000 -0700
+++ lhg/net/core/netpoll.c	2005-08-11 16:45:20.000000000 -0700
@@ -33,6 +33,7 @@
 #define MAX_UDP_CHUNK 1460
 #define MAX_SKBS 32
 #define MAX_QUEUE_DEPTH (MAX_SKBS / 2)
+#define MAX_RETRIES 20000
 
 static DEFINE_SPINLOCK(skb_list_lock);
 static int nr_skbs;
@@ -265,7 +266,8 @@ static void netpoll_send_skb(struct netp
 		return;
 	}
 
-	while (1) {
+	do {
+		npinfo->tries--;
 		spin_lock(&np->dev->xmit_lock);
 		np->dev->xmit_lock_owner = smp_processor_id();
 
@@ -277,6 +279,7 @@ static void netpoll_send_skb(struct netp
 			np->dev->xmit_lock_owner = -1;
 			spin_unlock(&np->dev->xmit_lock);
 			netpoll_poll(np);
+			udelay(50);
 			continue;
 		}
 
@@ -285,12 +288,15 @@ static void netpoll_send_skb(struct netp
 		spin_unlock(&np->dev->xmit_lock);
 
 		/* success */
-		if(!status)
+		if(!status) {
+			npinfo->tries = MAX_RETRIES; /* reset */
 			return;
+		}
 
 		/* transmit busy */
 		netpoll_poll(np);
-	}
+		udelay(50);
+	} while (npinfo->tries > 0);
 }
 
 void netpoll_send_udp(struct netpoll *np, const char *msg, int len)
@@ -642,6 +648,7 @@ int netpoll_setup(struct netpoll *np)
 		npinfo->rx_np = NULL;
 		npinfo->poll_lock = SPIN_LOCK_UNLOCKED;
 		npinfo->poll_owner = -1;
+		npinfo->tries = MAX_RETRIES;
 		npinfo->rx_lock = SPIN_LOCK_UNLOCKED;
 	} else
 		npinfo = ndev->npinfo;
Index: lhg/include/linux/netpoll.h
===================================================================
--- lhg.orig/include/linux/netpoll.h	2005-08-11 15:40:27.000000000 -0700
+++ lhg/include/linux/netpoll.h	2005-08-11 16:17:56.000000000 -0700
@@ -26,6 +26,7 @@ struct netpoll {
 struct netpoll_info {
 	spinlock_t poll_lock;
 	int poll_owner;
+	int tries;
 	int rx_flags;
 	spinlock_t rx_lock;
 	struct netpoll *rx_np; /* netpoll that registered an rx_hook */

^ permalink raw reply

* [PATCH 3/8] netpoll: e1000 netpoll tweak
From: Matt Mackall @ 2005-08-12  2:19 UTC (permalink / raw)
  To: Andrew Morton, David S. Miller
  Cc: ak, Jeff Moyer, netdev, linux-kernel, mingo, john.ronciak,
	rostedt
In-Reply-To: <3.502409567@selenic.com>

Suggested by Steven Rostedt, matches his patch included in e100.

Signed-off-by: Matt Mackall <mpm@selenic.com>

Index: l/drivers/net/e1000/e1000_main.c
===================================================================
--- l.orig/drivers/net/e1000/e1000_main.c	2005-08-06 17:36:32.000000000 -0500
+++ l/drivers/net/e1000/e1000_main.c	2005-08-06 17:55:01.000000000 -0500
@@ -3789,6 +3789,7 @@ e1000_netpoll(struct net_device *netdev)
 	struct e1000_adapter *adapter = netdev_priv(netdev);
 	disable_irq(adapter->pdev->irq);
 	e1000_intr(adapter->pdev->irq, netdev, NULL);
+	e1000_clean_tx_irq(adapter);
 	enable_irq(adapter->pdev->irq);
 }
 #endif

^ permalink raw reply

* [PATCH 1/8] netpoll: rx_flags bugfix
From: Matt Mackall @ 2005-08-12  2:19 UTC (permalink / raw)
  To: Andrew Morton, David S. Miller
  Cc: ak, Jeff Moyer, netdev, linux-kernel, mingo, john.ronciak,
	rostedt
In-Reply-To: <1.502409567@selenic.com>

Initialize npinfo->rx_flags.  The way it stands now, this will have random
garbage, and so will incur a locking penalty even when an rx_hook isn't
registered and we are not active in the netpoll polling code.

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Matt Mackall <mpm@selenic.com>

--- linux-2.6.12/net/core/netpoll.c.orig	2005-07-01 14:02:56.039174635 -0400
+++ linux-2.6.12/net/core/netpoll.c	2005-07-01 14:03:16.688739508 -0400
@@ -639,6 +639,7 @@ int netpoll_setup(struct netpoll *np)
 		if (!npinfo)
 			goto release;
 
+		npinfo->rx_flags = 0;
 		npinfo->rx_np = NULL;
 		npinfo->poll_lock = SPIN_LOCK_UNLOCKED;
 		npinfo->poll_owner = -1;

^ permalink raw reply

* [PATCH 2/8] netpoll: deadlock bugfix
From: Matt Mackall @ 2005-08-12  2:19 UTC (permalink / raw)
  To: Andrew Morton, David S. Miller
  Cc: ak, Jeff Moyer, netdev, linux-kernel, mingo, john.ronciak,
	rostedt
In-Reply-To: <2.502409567@selenic.com>

This fixes an obvious deadlock in the netpoll code.  netpoll_rx takes the
npinfo->rx_lock.  netpoll_rx is also the only caller of arp_reply (through
__netpoll_rx).  As such, it is not necessary to take this lock.

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Matt Mackall <mpm@selenic.com>

Index: l/net/core/netpoll.c
===================================================================
--- l.orig/net/core/netpoll.c	2005-08-06 17:47:48.000000000 -0500
+++ l/net/core/netpoll.c	2005-08-06 17:47:49.000000000 -0500
@@ -353,11 +353,8 @@ static void arp_reply(struct sk_buff *sk
 	struct sk_buff *send_skb;
 	struct netpoll *np = NULL;
 
-	spin_lock_irqsave(&npinfo->rx_lock, flags);
 	if (npinfo->rx_np && npinfo->rx_np->dev == skb->dev)
 		np = npinfo->rx_np;
-	spin_unlock_irqrestore(&npinfo->rx_lock, flags);
-
 	if (!np)
 		return;
 

^ permalink raw reply

* [PATCH 0/8] netpoll: various bugfixes
From: Matt Mackall @ 2005-08-12  2:18 UTC (permalink / raw)
  To: Andrew Morton, David S. Miller
  Cc: ak, Jeff Moyer, netdev, linux-kernel, mingo, john.ronciak,
	rostedt

This patch series cleans up a few outstanding bugs in netpoll:

- two bugfixes from Jeff Moyer's netpoll bonding
- a tweak to e1000's netpoll stub
- timeout handling for e1000 with carrier loss
- prefilling SKBs at init
- a fix-up for a race discovered in initialization
- an unused variable warning

This patch set was tested over repeated rebooting with both tg3 and
e1000 and random cable disconnection, with and without SMP and
preempt. Please apply.

^ permalink raw reply

* ÁÖ¹æ¿ë¿ø¸ñÄ®¼¼Æ®7PCS
From: whwls @ 2005-08-12  1:51 UTC (permalink / raw)
  To: linux-xfs

[-- Attachment #1: Type: text/html, Size: 1414 bytes --]

^ permalink raw reply

* ÆÐ¼Ç Ãò¸®´×¿¡¹«·á»çÀºÇ°!-ºÎµµÁ¤¸®
From: Bernie Callahan @ 2005-08-12  1:47 UTC (permalink / raw)
  To: netdev

[-- Attachment #1: Type: text/html, Size: 417 bytes --]

^ permalink raw reply

* ★購物網站★套裝網站∥原始碼只要$999-
From: Yahoo!奇摩拍賣 @ 2005-08-12  1:40 UTC (permalink / raw)


[-- Attachment #1: Type: text/html, Size: 4738 bytes --]

^ permalink raw reply

* CONGRATULATIONS!CONGRATULATIONS!!CONGRATULATIONS!!!
From: MRS ANGELA MANNI THE DESK OF THE PRESIDENT. @ 2005-08-12  0:56 UTC (permalink / raw)
  To: netdev

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="DEFAULT", Size: 3005 bytes --]

DATE: 11th August, 2005.
FROM: MRS ANGELA MANNI THE DESK OF THE PRESIDENT.
THE NATIONAL LOTTERY INTERNATIONAL PROMOTIONS/PRIZE
AWARD.

REF Nº:EGS/3662367114/13: BATCH : 15/0018/IPD


RE: AWARD NOTIFICATION.

This is to inform you of the release of THE NATIONAL LOTTERY INTERNATIONAL PROMOTIONS PRIZE DRAW, held on the 5th of August 2005, but owing to some mix up of numbers and addresses and the holidays, the results were released on the 11th August, 2005.Your name was attached to ticket number 085-12876077-09 with serial number 51390-0 that drew the lucky numbers of 03-05-12-14-28-38, which consequently won the lottery in the 5th category. You have therefore been approved for a lump sum pay of £500,000.00. (FIVE HUNDRED THOUSAND BRITISH POUNDS ONLY), in cash credited to file with REF: Nº.EGS/3662367114/13. This is from a total cash prize of £70,020.225.00, shared among the (25) twenty-five international winners in this category.

CONGRATULATIONS!!!

Your fund is now deposited with our Security Company and insured in your name. Due to mix up of some numbers and names, we ask that you keep this 
award from public notice until your claim has been processed, and the money remitted to your account, as this is part of our security protocol, to avoid double claiming and unwarranted taking of advantage of this program by participants, as has happened in the past.

All participants were selected through a computer ballot system drawn from 25,000 names, email addresses & official addresses, from Asia, Australia, New Zealand, Europe, North and South America, Middle East and Africa, as part of our International Promotions Program.

We hope your lucky name will draw a bigger cash prize in the subsequent programs. To begin your lotteryclaims, please contact your Claims Agent below with the following information for prompt processing of your claims

FULL NAME
ADDRESS
COUNTRY
AGE
PROFESSION/OCCUPATION
TELEPHONE
FAX

DR LUIS FERNANDEZ, FOREIGN OPERATION MANAGER,
GLOBAL SECURITY & FINANCE COMPANY SPAIN, EMAIL:(drluisfernandez@netscape.net or nationalclaims@fsmail.net)TELEPHONE: 0034 67 7256839
Remember, all prize money must be claimed not later than 27th of August, 2005. Any claim not made by this date will be returned to the DEPARTMENT OF THE TREASURY.

NOTE: In order to avoid unnecessary delays and complications, please 
remember to quote your reference and batch numbers in all correspondences 
with us; or your Claim Agent. Furthermore, should there be any change of 
address, please do inform your Claim Agent as soon as possible. An 
original copy of your lucky winning ticket and your deposit certificate 
will be sent to you by your Claim Agent, DR LUIS FERNANDEZ.

CONGRATULATIONS!!!!
Once again from all members of our staff and thank you for being a part of our International Promotions program. We wish you continued good fortunes.

Sincerely,

ANGELA MANNI (MRS)
PRESIDENT.

N.B. PLEASE CONTACT YOUR CLAIMS AGENT. ANYBODY BELOW 18YEARS IS AUTOMATICALLY DISQUALIFIED.




^ permalink raw reply

* ¡á¡á¡á¼±Âø¼ø333¸í²²¸ø¸»¸®´ÂÀ̺¥Æ®¡á¡á¡á nx
From: lsong18 @ 2005-08-12  0:54 UTC (permalink / raw)
  To: netdev

[-- Attachment #1: Type: text/html, Size: 4955 bytes --]

^ permalink raw reply

* Ä«µåÀÚ±ÝÀ¸·Î°í¹ÎÇϽôºÐ,ÃÖÀú±Ý¸®»óȯ¹æ¹ýÀ»¹«·á»ó´ãÇØµå¸³´Ï´Ù.
From: ¹«·á´ë³³»ó´ã @ 2005-08-12  0:48 UTC (permalink / raw)
  To: netdev

[-- Attachment #1: Type: text/html, Size: 682 bytes --]

^ permalink raw reply

* ÄÚ°ñÀ̰¡ ½ÉÇØ¼÷¸é¿¡ ¹æÇذ¡µÇ½Ã´ÂºÐ Çʼöǰ.
From: ÀϺ»È÷Æ®»óǰ @ 2005-08-12  0:48 UTC (permalink / raw)
  To: cvs

[-- Attachment #1: Type: text/html, Size: 1766 bytes --]

^ permalink raw reply

* (no subject)
From: seohai @ 2005-08-12  0:40 UTC (permalink / raw)




^ permalink raw reply

* Прорыв в продажах!
From: 23 - 24 августа 2005 года @ 2005-08-12  0:39 UTC (permalink / raw)
  To: netdev


[-- Attachment #1.1: Type: text/plain, Size: 2928 bytes --]

 Приглашаем руководителей отделов продаж, директоров по продажам, коммерческих
директоров и других специалистов принять участие в новом актуальном семинаре:



"Прорыв в продажах! 
Алгоритм действий начальника отдела продаж" 
23 - 24 августа 2005 года 

Цель семинара-тренинга: Познакомить директоров по продажам и руководителей
отделов продаж с новой Системой Роста ПродажTM, которая позволяет разработать
программу Прорыва в продажах (опыт 30-250% дополнительного прироста). Участники
смогут перестроить не только подсистемы планирования, контроля продаж,
подходы к принятию оперативных решений, но и скорректировать свою текущую
ежедневную работу, организовав ее для достижения целей роста продаж компании.


Cеминар адресован директорам по продажам, руководителям отделов продаж,
коммерческим директорам, которые заинтересованы в достижении достаточно
амбициозных целей роста. Система наиболее ценна для компаний, которые хотят
превратить тенденцию спада в рост, или планирующих за год удвоить свои
темпы роста. Тренинг будет адаптирован под группу зарегистрировавшихся
участников. 

В программе семинара: 

 Методы экспресс-анализа эффективности системы продаж в компании. Система
сбалансированных показателей эффективности системы продаж.  Основные заблуждения
менеджеров по продажам и их руководителей. 4 роли руководителя сбытовой
функции  Три основных подхода к продажам: особенности России. Концепция
CRM (управление взаимоотношениями с клиентами) и ее реализация на практике
 Жизненный цикл клиента (ЖЦК) и его стоимость. Особенности работы с VIP-клиентами
 Структура Системы роста продаж (практическая альтернатива 4П маркетинга).
Дизайн/корректировка элементов системы под конкретные количественные цели
роста  Особенности построения системы продаж с учетом CRM. Способы активизации
продаж (мобилизационные механизмы)  Внедрение новой системы продаж: алгоритм
действий и особенности внедрения в разных отраслях и видах бизнеса. Возможные
ошибки и проблемы с учетом специфики менталитета  Разработка плана внедрения
системы на предприятиях участников. Основные барьеры внедрения и их преодоление;
 Вспомогательные подсистемы: отбор продавцов - новые требования и способы
отбора, стимулирование продавцов - структура компенсационного пакета, методы
и формы стимулирования, подсистема собраний-совещаний;  Культура активных
продаж: внедрение новых элементов в корпоративную культуру  Автор семинара
- известный системный тренер-консультант, руководитель и совладелец тренингово-консалтинговой
компании "Business Solutions" (Украина). Автор-разработчик Системы Роста
ПродажT, с успехом внедривший ее в компаниях клиентов и в собственном бизнесе.
Имеет восьмилетний опыт разработки и внедрения процессов изменений и развития
бизнеса в компаниях разных форм собственности и масштабов бизнеса. 

 Получить подробную информацию Вы можете по телефонам: (095) 980-65-39

   

[-- Attachment #1.2: Type: text/html, Size: 4044 bytes --]

^ permalink raw reply

* Fragâncias exóticas.                     . sok
From: Evandro Gentil    . xtb @ 2005-08-12  0:34 UTC (permalink / raw)
  To: clientes

[-- Attachment #1: Type: text/html, Size: 2760 bytes --]

^ permalink raw reply

* Seminario Fiscalización Dirección del Trabajo - Santiago.
From: =?iso-8859-1?q?Sitiven_Capacitaci=F3n_ @ 2005-08-12  0:30 UTC (permalink / raw)


[-- Attachment #1: Type: text/html, Size: 15100 bytes --]

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox