Re: [PATCH] Enable NTFS support on loongson

2012-10-04 Thread Brad Smith
On Thu, Oct 04, 2012 at 06:29:21PM -0400, Ted Unangst wrote:
> On Wed, Oct 03, 2012 at 22:26, Donovan Watteau wrote:
> > Hello,
> > 
> > The following diff enables NTFS support on loongson.  I've
> > been using it with external drives on my Yeeloong without any
> > problem.
> 
> Honestly, I think we should just enable it everywhere.  You're
> unlikely to stick an ntfs disk in your vax, but vnd disk images are
> theoretically possible.

The NTFS file system support would need to work on big endian systems
before that would make sense.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



Re: Scheduler improvements

2012-10-04 Thread Marc Espie
On Thu, Oct 04, 2012 at 06:28:11PM -0400, Ted Unangst wrote:
> On Thu, Oct 04, 2012 at 23:42, Gregor Best wrote:
> 
> > As before, I'm looking forward to anything you have to comment, especially
> > cool
> > benchmark ideas or the like.
> 
> A short one is building a kernel.  Try before and after with make,
> make -j 2, and make -j 4.  (or ncpu and ncpu * 2).

A more realistic and useful one is rebuilding the full package tree
with dpb, which is rather simple to try these days (just requires about
30GB of disk space)

kernel will take a few minutes, dpb some hours to a few days...



Re: ral rt2661 tx interrupt race fix

2012-10-04 Thread Kenneth R Westerback
On Thu, Oct 04, 2012 at 07:21:50PM +0200, Stefan Sperling wrote:
> On Sun, Sep 30, 2012 at 10:32:23PM +0100, Tom Murphy wrote:
> > Stefan,
> > 
> >   Your patch works well on my system:
> > 
> >   ral0 at pci0 dev 14 function 0 "Ralink RT2661" rev 0x00: irq 10, address 
> >   00:14:85:d5:39:bb
> >   ral0: MAC/BBP RT2661D, RF RT2529 (MIMO XR)
> > 
> >   Only problem is downloading from the net is extremely slow. Benchmarks
> >   have it at 512 KB/sec as opposed to 10 megabits/s.
> > 
> >   This is (internet) -> OpenBSD -> ral0 -> wifi client
> > 
> >   But it doesn't crash or bring up OACTIVE flag anymore which is
> >   fantastic.. however, it's a little to slow to use with any regularity.
> > 
> >   Uploads are fine (wifi -> ral(4) -> OpenBSD -> out to the net). 
> 
> I've already replied to Tom in private requesting some additional
> testing but I would still be interested in other reports about
> transmission speed issues with ral.
> 
> I've also noticed that my ral-based AP can be ridiculously slow.
> I believe this is a separate bug which is independent of the OACTIVE
> lock-up problem.
> 
> Is anyone else out there seeing this, too?
> 
> IIRC dragonfly have some ral performance fixes in their git history
> which haven't been ported back to OpenBSD yet.
> 

I gave up on my ral ap a couple of years ago due to ridiculous slowness,
but the athn replacement was just as slow. Got a new motherboard
going into the firewall shortly and may be motivated to recheck the
wireless performance of -current then.

 Ken



Re: [PATCH] Enable NTFS support on loongson

2012-10-04 Thread Ted Unangst
On Wed, Oct 03, 2012 at 22:26, Donovan Watteau wrote:
> Hello,
> 
> The following diff enables NTFS support on loongson.  I've
> been using it with external drives on my Yeeloong without any
> problem.

Honestly, I think we should just enable it everywhere.  You're
unlikely to stick an ntfs disk in your vax, but vnd disk images are
theoretically possible.



Re: Scheduler improvements

2012-10-04 Thread Ted Unangst
On Thu, Oct 04, 2012 at 23:42, Gregor Best wrote:

> As before, I'm looking forward to anything you have to comment, especially
> cool
> benchmark ideas or the like.

A short one is building a kernel.  Try before and after with make,
make -j 2, and make -j 4.  (or ncpu and ncpu * 2).



Re: Scheduler improvements

2012-10-04 Thread Gregor Best
Hi people,

after a (very) long time of silence on this, here's another go at it. This time,
I basically started from scratch and used a bit of code by Christiano Haesberth
which had been posted to tech@ a while ago to detect CPU topology on amd64 and
take that into account when moving processes between CPUs.

This version has one single queue per CPU, getting rid of a) the one single 
system
wide runqueue and b) the queue for expired processes. This simplifies things a 
bit
and performs just as well as my previous versions (the only difference is the 
order
in which expired procs get selected for running on a CPU). One advantage is that
process selection is in O(log n) of the number of processes on the CPU and 
depends
neither on the total number of processes nor the number of expired processes in
the runqueue.

The factors for the cost of moving a process between hardware threads, cpu dies
and cpu packages are guesses now, I think those will have to be tuned further.
Sadly, I haven't had access to a multiprocessor machine with a more diverse
architecture than "a bunch of cores on the same die".

I tested this on some more machines than before; a Core i5, an i7 and my Core 2
Duo and on all machines (perceived) interactivity was improved. The simplest
benchmark I used was playing back a 1080p version of Big Buck Bunny with 
mplayer.
All machines I tested on had Intel graphics cards, one GM965 (on the Core2Duo) 
and
the others were Sandy Bridge devices. On all of them, playback was smoother with
the i7 being most visible. With the default scheduler, watching the movie was a
big pain due to heavy frame-dropping, with my patch, the movie was watchable 
(with
frame dropping only (barely) noticable in scenes with much movement).

As before, I'm looking forward to anything you have to comment, especially cool
benchmark ideas or the like.

-- 
Gregor Best
Index: arch/amd64/amd64/identcpu.c
===
RCS file: /cvs/src/sys/arch/amd64/amd64/identcpu.c,v
retrieving revision 1.39
diff -u -r1.39 identcpu.c
--- arch/amd64/amd64/identcpu.c 19 Sep 2012 20:19:31 -  1.39
+++ arch/amd64/amd64/identcpu.c 4 Oct 2012 21:27:55 -
@@ -202,6 +202,8 @@
 
 void via_nano_setup(struct cpu_info *ci);
 
+void cpu_topology(struct cpu_info *ci);
+
 void
 via_nano_setup(struct cpu_info *ci)
 {
@@ -470,4 +472,123 @@
sensordev_install(&ci->ci_sensordev);
 #endif
}
+
+   cpu_topology(ci);
+}
+
+/*
+ * Base 2 logarithm of an int. returns 0 for 0 (yeye, I know).
+ */
+static int
+log2(unsigned int i)
+{
+   int ret = 0;
+
+   while (i >>= 1)
+   ret++;
+
+   return (ret);
+}
+
+static int
+mask_width(u_int x)
+{
+   int bit;
+   int mask;
+   int powerof2;
+
+   powerof2 = ((x - 1) & x) == 0;
+   mask = (x << (1 - powerof2)) - 1;
+
+   /* fls */
+   if (mask == 0)
+   return (0);
+   for (bit = 1; mask != 1; bit++)
+   mask = (unsigned int)mask >> 1;
+
+   return (bit);
+}
+
+/*
+ * Build up cpu topology for given cpu, must run on the core itself.
+ */
+void
+cpu_topology(struct cpu_info *ci)
+{
+   u_int32_t eax, ebx, ecx, edx;
+   u_int32_t apicid, max_apicid, max_coreid;
+   u_int32_t smt_bits, core_bits, pkg_bits;
+   u_int32_t smt_mask, core_mask, pkg_mask;
+
+   /* We need at least apicid at CPUID 1 */
+   CPUID(0, eax, ebx, ecx, edx);
+   if (eax < 1)
+   goto no_topology;
+
+   /* Initial apicid */
+   CPUID(1, eax, ebx, ecx, edx);
+   apicid = (ebx >> 24) & 0xff;
+
+   if (strcmp(cpu_vendor, "AuthenticAMD") == 0) {
+   /* We need at least apicid at CPUID 0x8008 */
+   CPUID(0x8000, eax, ebx, ecx, edx);
+   if (eax < 0x8008)
+   goto no_topology;
+
+   CPUID(0x8008, eax, ebx, ecx, edx);
+   core_bits = (ecx >> 12) & 0xf;
+   if (core_bits == 0)
+   goto no_topology;
+   /* So coreidsize 2 gives 3, 3 gives 7... */
+   core_mask = (1 << core_bits) - 1;
+   /* Core id is the least significant considering mask */
+   ci->ci_core_id = apicid & core_mask;
+   /* Pkg id is the upper remaining bits */
+   ci->ci_pkg_id = apicid & ~core_mask;
+   ci->ci_pkg_id >>= core_bits;
+   } else if (strcmp(cpu_vendor, "GenuineIntel") == 0) {
+   /* We only support leaf 1/4 detection */
+   CPUID(0, eax, ebx, ecx, edx);
+   if (eax < 4)
+   goto no_topology;
+   /* Get max_apicid */
+   CPUID(1, eax, ebx, ecx, edx);
+   max_apicid = (ebx >> 16) & 0xff;
+   /* Get max_coreid */
+   CPUID2(4, 0, eax, ebx, ecx, edx);
+   max_coreid = ((eax >> 26) & 0x3f) + 1;
+   /* SMT */

Tecnicas Super Efectivas de Cobranza

2012-10-04 Thread Mayerlín Aguilar
[IMAGE]

Técnicas Súper Efectivas de Cobranza
Seminario ONLINE en VIVO este 08 de Octubre

¡Descubra el modo rápido, fácil y legal de recuperar su dinero de cuentas
atrasadas! usted conocerá docenas de secretos que las empresas más
efectivas usan para que los deudores paguen rápido, convierta el teléfono
en su instrumento más poderoso de recuperación de cartera, cómo manejar
cada excusa, cómo tratar con gente enojada y abusiva y aprenda a escribir
cartas que le faciliten el trabajo.

Recibirá herramientas y técnicas que necesita para ser más productivo,
más eficaz y más contundente, sin mencionar que estará menos estresado en
el trabajo. ¡No deje pasar esta única oportunidad!

Entre los puntos a tratar se incluyen:

  * Cómo manejar excusas, mentiras y quejas de los deudores

  * Calme a clientes furiosos e irracionales con técnicas que trabajan
como un encanto

  * Mantenga su organización fuera de problemas, sabiendo exactamente
cuáles son sus derechos y límites legales

  * Haga que ingrese más dinero con sus cartas de cobranza

  * Mantenga el control de la conversación telefónica cuando los deudores
tratan de conducirlo por otro lado

  * Sepa exactamente cuándo y cómo usted debería considerar la demanda
judicial en cuentas atrasadas.

Adquiera la información completa y sin compromiso solo responda este
correo con asunto -Deseo Folleto Cobranza o Comuníquese al (507) 279-1083
/ 279-0258 / 279-0887 - y a la brevedad lo recibira.

ESTE CORREO NO PUEDE SER CONSIDERADO INTRUSIVO YA QUE CUMPLE CON LAS
POLÍTICAS ANTISPAM INTERNACIONALES Y LOCALES: Responda este correo con el
Asunto borrar y automáticamente quedará fuera de nuestras listas.

[demime 1.01d removed an attachment of type image/jpeg which had a name of 
co-panama.jpg]



Venda como un Guerrillero - Logre un Record de Ventas

2012-10-04 Thread Lic. Sue Lopez
Venda como un Guerrillero - Armas y Tácticas No Convencionales para
Lograr un Récord de Ventas
Panama 11 de Octubre / Sheraton Panama Hotel & Convention Center

Para sobrevivir en el medio actual de las ventas, ya sea de productos o
servicios, usted debe poner en práctica el coraje de un mercenario
veterano… ¡Debe convertirse en un guerrillero!... Cierre más ventas y
gane más cuentas con las estrategias probadas de “las ventas de
guerrilla”.

Hoy, hay una selva ahí afuera: Los presupuestos están limitados, la
competencia es feroz y la decisión de compra a menudo se basa en el
precio, pero usted tiene garantizado el cumplimiento de sus metas porque
este seminario le ayudará a dominar las técnicas, los acercamientos y las
habilidades que diferencian al “Top 5 de los Vendedores” de todos los
demás y obtendrá lo que necesita para llevar sus ventas a un nivel más
alto y poder disfrutar de las ventajas que siempre ha esperado de su
carrera en ventas.

Este seminario le ofrece los beneficios de una nueva forma revolucionaria
de vender, incluyendo:
1. Las 10 características clave que destacan a los “mejores vendedores”
de los demás… Descubra los secretos del éxito de los vendedores
guerreros.
2. Cómo implementar tácticas que convierten a los prospecto en clientes.
3. Piense como el cliente y adapte su acercamiento a la venta.
4. Domine la venta con valor agregado: La llave para mantener sus
clientes a largo plazo.
5. Acorte su ciclo de venta y obtenga el “sí” más rápido.
6. Vuélvase indispensable y derrote a sus competidores.

¡Obtenga la Información Completa!
Respondiendo los siguientes datos:
-Empresa:
-Nombre:
-Puesto:
-Tel: ( )

o Llame al (507)  2791083-279-0887

ESTE CORREO NO PUEDE SER CONSIDERADO INTRUSIVO YA QUE CUMPLE CON LAS
POLÍTICAS ANTISPAM INTERNACIONALES Y LOCALES: Responda este correo con el
Asunto unsus y automáticamente quedará fuera de nuestras listas. Este
correo ha sido enviado a: tech@openbsd.org - 111254



tx dma segments for if_vr

2012-10-04 Thread Chris Cappuccio
Darren Tucker's vlan tagging for vr motivated me. Here is a diff that 
implements transmit DMA segments, instead of copying fragmented mbufs every 
time. This should be a win for userland traffic, and NFS. It also implements a 
FreeBSD feature to only ask for TX completion interrupts every 8 packets, 
instead of every packet, which is another win for weak CPUs. FreeBSD has been 
doing DMA tx segments and 1/8 completion interrupts for 4 years across the same 
chips. Annoyingly, on first glance, the rhine chip still seems to send the same 
number completion interrupts. But it's clear that bus_dmamap_load_mbuf no 
longer fails at the top of vr_encap on packets with 8 or less mbuf fragments, 
avoiding the whole new mbuf and m_copydata dance for the majority of situations 
now. The next win would be to copy reyk's method from if_myx to create a new 
DMA segment for padding packets < VR_MINFRAMELEN instead of create a whole new 
mbuf and copying. Micro-optimizations for micro-platforms.

This is heavily influenced by yongari@FreeBSD's work 4 years ago. (In fact, 
maybe too much so. As far as I can tell, allowing for DMA transfers of MCLBYTES 
* VR_MAXFRAGS is overkill since a packet over the size of MCLBYTES isn't even 
possible with this chip. Also returns from vr_encap are now ENOFBUFS but the 
error gets ignored upstream at this point.)

Index: if_vr.c
===
RCS file: /cvs/src/sys/dev/pci/if_vr.c,v
retrieving revision 1.115
diff -u -r1.115 if_vr.c
--- if_vr.c 18 Sep 2012 14:49:44 -  1.115
+++ if_vr.c 4 Oct 2012 17:12:08 -
@@ -113,7 +113,7 @@
NULL, "vr", DV_IFNET
 };
 
-int vr_encap(struct vr_softc *, struct vr_chain *, struct mbuf *);
+int vr_encap(struct vr_softc *, struct vr_chain **, struct mbuf *);
 void vr_rxeof(struct vr_softc *);
 void vr_rxeoc(struct vr_softc *);
 void vr_txeof(struct vr_softc *);
@@ -720,13 +720,17 @@
 
cd = &sc->vr_cdata;
ld = sc->vr_ldata;
+
+   cd->vr_tx_pkts = 0;
+   cd->vr_tx_cnt = 0;
+
for (i = 0; i < VR_TX_LIST_CNT; i++) {
cd->vr_tx_chain[i].vr_ptr = &ld->vr_tx_list[i];
cd->vr_tx_chain[i].vr_paddr =
sc->sc_listmap->dm_segs[0].ds_addr +
offsetof(struct vr_list_data, vr_tx_list[i]);
 
-   if (bus_dmamap_create(sc->sc_dmat, MCLBYTES, 1,
+   if (bus_dmamap_create(sc->sc_dmat, MCLBYTES * VR_MAXFRAGS, 
VR_MAXFRAGS,
MCLBYTES, 0, BUS_DMA_NOWAIT, &cd->vr_tx_chain[i].vr_map))
return (ENOBUFS);
 
@@ -984,11 +988,13 @@
 * frames that have been transmitted.
 */
cur_tx = sc->vr_cdata.vr_tx_cons;
-   while(cur_tx->vr_mbuf != NULL) {
-   u_int32_t   txstat;
+   while (cur_tx != sc->vr_cdata.vr_tx_prod) {
+   
+   u_int32_t   txstat, txctl;
int i;
 
txstat = letoh32(cur_tx->vr_ptr->vr_status);
+   txctl = letoh32(cur_tx->vr_ptr->vr_ctl);
 
if ((txstat & VR_TXSTAT_ABRT) ||
(txstat & VR_TXSTAT_UDF)) {
@@ -1002,7 +1008,7 @@
sc->vr_flags |= VR_F_RESTART;
break;
}
-   VR_TXOWN(cur_tx) = htole32(VR_TXSTAT_OWN);
+   cur_tx->vr_ptr->vr_status = htole32(VR_TXSTAT_OWN);
CSR_WRITE_4(sc, VR_TXADDR, cur_tx->vr_paddr);
break;
}
@@ -1010,6 +1016,11 @@
if (txstat & VR_TXSTAT_OWN)
break;
 
+   sc->vr_cdata.vr_tx_cnt--;
+   /* Only the first descriptor in the chain is valid. */
+   if ((txctl & VR_TXCTL_FIRSTFRAG) == 0)
+   goto next;
+
if (txstat & VR_TXSTAT_ERRSUM) {
ifp->if_oerrors++;
if (txstat & VR_TXSTAT_DEFER)
@@ -1028,11 +1039,12 @@
cur_tx->vr_mbuf = NULL;
ifp->if_flags &= ~IFF_OACTIVE;
 
+next:
cur_tx = cur_tx->vr_nextdesc;
}
 
sc->vr_cdata.vr_tx_cons = cur_tx;
-   if (cur_tx->vr_mbuf == NULL)
+   if (sc->vr_cdata.vr_tx_cnt == 0)
ifp->if_timer = 0;
 }
 
@@ -1164,19 +1176,22 @@
  * pointers to the fragment pointers.
  */
 int
-vr_encap(struct vr_softc *sc, struct vr_chain *c, struct mbuf *m_head)
+vr_encap(struct vr_softc *sc, struct vr_chain **cp, struct mbuf *m_head)
 {
+   struct vr_chain *c = *cp;
struct vr_desc  *f = NULL;
struct mbuf *m_new = NULL;
-   u_int32_t   vr_flags = 0, vr_status = 0;
+   u_int32_t   vr_ctl = 0, vr_status = 0;
+   bus_dmamap_ttxmap;
+   int i;
 
if (sc->vr_quirks & VR_Q_CSUM

Re: ral rt2661 tx interrupt race fix

2012-10-04 Thread Stefan Sperling
On Sun, Sep 30, 2012 at 10:32:23PM +0100, Tom Murphy wrote:
> Stefan,
> 
>   Your patch works well on my system:
> 
>   ral0 at pci0 dev 14 function 0 "Ralink RT2661" rev 0x00: irq 10, address 
>   00:14:85:d5:39:bb
>   ral0: MAC/BBP RT2661D, RF RT2529 (MIMO XR)
> 
>   Only problem is downloading from the net is extremely slow. Benchmarks
>   have it at 512 KB/sec as opposed to 10 megabits/s.
> 
>   This is (internet) -> OpenBSD -> ral0 -> wifi client
> 
>   But it doesn't crash or bring up OACTIVE flag anymore which is
>   fantastic.. however, it's a little to slow to use with any regularity.
> 
>   Uploads are fine (wifi -> ral(4) -> OpenBSD -> out to the net). 

I've already replied to Tom in private requesting some additional
testing but I would still be interested in other reports about
transmission speed issues with ral.

I've also noticed that my ral-based AP can be ridiculously slow.
I believe this is a separate bug which is independent of the OACTIVE
lock-up problem.

Is anyone else out there seeing this, too?

IIRC dragonfly have some ral performance fixes in their git history
which haven't been ported back to OpenBSD yet.



Re: [PATCH] ospf6d problem when a route already exists with a different nexthop

2012-10-04 Thread Manuel Guesdon
On Thu, 4 Oct 2012 14:25:35 +0200
Claudio Jeker  wrote:
>| I started a large sync of the ospf6d kroute code with the one in ospfd. In
>| other words adding proper support for priorities. With that in the
>| tracking gets much simpler. I need a few more days and some testing before
>| sending the diff out.

OK. I'll be happy to test it !


Manuel 



Re: QLogic device FCP RESPONSE: 0x2

2012-10-04 Thread David Coppa
On Thu, Oct 4, 2012 at 11:52 AM, mohit sah  wrote:
> *HI *I have* **qlogic* FC HBA card which is not detecting the LUN
>
> I think the problem is with targeting...I have diabled acpicpu at boot time
> and using OpenBSD 5.1 amd64

> Any advice or help.

I don't know if this is the right advice, but I suspect you need to
recompile your kernel with the following option:

ISP_FIRMWARE_2400

Ciao,
David

> *
> 
> isp0* at pci4 dev 0 function 0 "QLogic ISP2432" rev 0x03: apic 9 int 6
>
> *isp0*: board type 2422 rev 0x3, resident firmware rev 4.0.26
>
> scsibus0 at *isp0*: 512 targets, WWPN 2124ff364ae8, WWNN
> 2024ff364ae8
>
> *isp0*: 0.0.0 FCP RESPONSE: 0x2
>
> *isp0*: 0.0.0 FCP RESPONSE: 0x2
>
> *isp0*: 0.1.0 FCP RESPONSE: 0x2
>
> *isp0*: 0.1.0 FCP RESPONSE: 0x2
>
> isp1 at pci4 dev 0 function 1 "QLogic ISP2432" rev 0x03: apic 9 int 13
>
> isp1: board type 2422 rev 0x3, resident firmware rev 4.0.26
>
> scsibus1 at isp1: 512 targets, WWPN 2124ff364ae9, WWNN 2024ff364ae9
>
> isp1: 0.0.0 FCP RESPONSE: 0x2
>
> isp1: 0.0.0 FCP RESPONSE: 0x2
>
> isp1: 0.1.0 FCP RESPONSE: 0x2
>
> isp1: 0.1.0 FCP RESPONSE: 0x2
> -
> Complete dmesg can be shown
> http://old.nabble.com/Mount-San-Disk-from-IBM-DS3400-tc34491545.html#



add support for elantech touchpads to pms(4)

2012-10-04 Thread Stefan Sperling
This diff adds support for Elantech touchpads to pms(4), so that
synpatics(4) will attach and allow configuration of edge-scrolling,
2-finger scrolling, toggle tap-to-click on/off, etc.

Currently, such pads only work in compat mode, which means they are
recognized as regular PS/2 mice and cannot be properly configured.

This patch adds support for hardware version 1, 2, and 3.
Linux also supports version 4 but this driver does not yet.
I have hardware version 3 which seems to work well, but code for
the other versions is entirely untested. If you have a machine with
a touchpad please try this diff. If it's an Elantech 1, 2, or 3,
it should be detected as such automatically. (If you're looking
for an easy way to configure the pad I'd suggest installing Xfce
and going to the Mouse/Touchpad settings window.)

If I don't get test reports for versions 1 and 2, my plan is to
commit the support code for versions 1 and 2 but only attach to
version 3. Bugs in touchpad support code can be rather irritating
so I'd prefer to keep versions 1 and 2 in PS/2 compat mode until
somebody can confirm that the code actually works. Thanks!

Index: pms.c
===
RCS file: /cvs/src/sys/dev/pckbc/pms.c,v
retrieving revision 1.31
diff -u -p -r1.31 pms.c
--- pms.c   22 Jul 2012 18:28:36 -  1.31
+++ pms.c   4 Oct 2012 12:56:24 -
@@ -57,6 +57,8 @@ struct pms_protocol {
 #define PMS_INTELLI1
 #define PMS_SYNAPTICS  2
 #define PMS_ALPS   3
+#define PMS_ELANTECH_V14
+#define PMS_ELANTECH   5
u_int packetsize;
int (*enable)(struct pms_softc *);
int (*ioctl)(struct pms_softc *, u_long, caddr_t, int, struct proc *);
@@ -108,6 +110,27 @@ struct alps_softc {
 #define ALPS_PRESSURE  40
 };
 
+struct elantech_softc {
+   int hw_version;
+   int flags;
+#define ELANTECH_F_REPORTS_PRESSURE0x01
+#define ELANTECH_F_HAS_ROCKER  0x02
+#define ELANTECH_F_PARITY_REVERSED 0x03
+#define ELANTECH_F_2FINGER_PACKET  0x04
+#define ELANTECH_F_HW_V1_OLD   0x08
+
+   int min_x, min_y;
+   int max_x, max_y;
+
+   u_char parity[256];
+   u_char p1, p2, p3;
+
+   /* Compat mode */
+   int wsmode;
+   int old_x, old_y;
+   u_int old_buttons;
+};
+
 struct pms_softc { /* driver status information */
struct device sc_dev;
 
@@ -129,6 +152,7 @@ struct pms_softc {  /* driver status inf
const struct pms_protocol *protocol;
struct synaptics_softc *synaptics;
struct alps_softc *alps;
+   struct elantech_softc *elantech;
 
u_char packet[8];
 
@@ -227,6 +251,17 @@ intpms_ioctl_alps(struct pms_softc *, u
 intpms_sync_alps(struct pms_softc *, int);
 void   pms_proc_alps(struct pms_softc *);
 
+intpms_enable_elantech(struct pms_softc *);
+intpms_ioctl_elantech(struct pms_softc *, u_long, caddr_t, int,
+struct proc *);
+intpms_sync_elantech_v1(struct pms_softc *, int);
+intpms_sync_elantech_v2(struct pms_softc *, int);
+intpms_sync_elantech(struct pms_softc *, int);
+void   pms_proc_elantech_v1(struct pms_softc *);
+void   pms_proc_elantech_v2(struct pms_softc *);
+void   pms_proc_elantech_v3(struct pms_softc *);
+void   pms_proc_elantech(struct pms_softc *);
+
 intsynaptics_set_mode(struct pms_softc *, int);
 intsynaptics_query(struct pms_softc *, int, int *);
 intsynaptics_get_hwinfo(struct pms_softc *);
@@ -235,6 +270,15 @@ void   synaptics_sec_proc(struct pms_softc
 intalps_sec_proc(struct pms_softc *);
 intalps_get_hwinfo(struct pms_softc *);
 
+void   elantech_send_input(struct pms_softc *, u_int, int, int, int, int);
+intelantech_id_query(struct pms_softc *, int, u_char *);
+intelantech_get_hwinfo(struct pms_softc *);
+intelantech_ps2_cmd(struct pms_softc *, u_char);
+intelantech_read_reg(struct pms_softc *, u_char, u_char *);
+intelantech_write_reg(struct pms_softc *, u_char, u_char);
+intelantech_set_absolute_mode(struct pms_softc *);
+
+
 struct cfattach pms_ca = {
sizeof(struct pms_softc), pmsprobe, pmsattach, NULL,
pmsactivate
@@ -293,6 +337,24 @@ const struct pms_protocol pms_protocols[
pms_proc_alps,
NULL
},
+   /* Elantech touchpad (hardware version 1) */
+   {
+   PMS_ELANTECH_V1, 4,
+   pms_enable_elantech,
+   pms_ioctl_elantech,
+   pms_sync_elantech_v1,
+   pms_proc_elantech_v1,
+   NULL
+   },
+   /* Elantech touchpad */
+   {
+   PMS_ELANTECH, 6,
+   pms_enable_elantech,
+   pms_ioctl_elantech,
+   pms_sync_elantech,
+   pms_proc_elantech,
+   NULL
+   },
 };
 
 int
@@ -1358,5 +1420,643 @@ pms_proc_alps(struct pms_softc *sc)
alps->old_x = x;
 

Re: [PATCH] ospf6d problem when a route already exists with a different nexthop

2012-10-04 Thread Claudio Jeker
On Thu, Oct 04, 2012 at 11:54:00AM +0200, Manuel Guesdon wrote:
> Here is a patch adapted from ospfd patch of "Tue Sep 25 11:25:41 2007
> UTC" (the one of version 1.52 of kroute.c):
> <<
> Last missing piece in the equal cost multipath support for ospfd.
> Send all possible nexthops to the parent process and correctly sync
> the RIB, FIB and kernel routing table. Based on initial work by pyr@.
> OK pyr@ norby@
> PS: don't forget that you need to enable multipath support via a sysctl
> >>
> 
> It seems to solve my problem but not "perfectly". 
> When starting ospf6d with the best link between 2 hosts down, fib contains
> 2 other routes comme from 2 other hosts (these 2 routes have equal cost).
> When the link came UP, these 2 routes are removed and replaced by the best
> route; that's alright.
> Next when the link goes down, the 2 alternative routes are well added in fib
> but the precedent best route is still in the fib (I see it with  route -n -v
> show |grep TargetIP). May be an important point: TargetIP is an IPv6 on lo1.
> 
> I can't find why; if you have any idea... I have a test network so I can make
> test easily...
> 

I started a large sync of the ospf6d kroute code with the one in ospfd. In
other words adding proper support for priorities. With that in the
tracking gets much simpler. I need a few more days and some testing before
sending the diff out.

-- 
:wq Claudio



[PATCH] ospf6d problem when a route already exists with a different nexthop

2012-10-04 Thread Manuel Guesdon
Here is a patch adapted from ospfd patch of "Tue Sep 25 11:25:41 2007
UTC" (the one of version 1.52 of kroute.c):
<<
Last missing piece in the equal cost multipath support for ospfd.
Send all possible nexthops to the parent process and correctly sync
the RIB, FIB and kernel routing table. Based on initial work by pyr@.
OK pyr@ norby@
PS: don't forget that you need to enable multipath support via a sysctl
>>

It seems to solve my problem but not "perfectly". 
When starting ospf6d with the best link between 2 hosts down, fib contains
2 other routes comme from 2 other hosts (these 2 routes have equal cost).
When the link came UP, these 2 routes are removed and replaced by the best
route; that's alright.
Next when the link goes down, the 2 alternative routes are well added in fib
but the precedent best route is still in the fib (I see it with  route -n -v
show |grep TargetIP). May be an important point: TargetIP is an IPv6 on lo1.

I can't find why; if you have any idea... I have a test network so I can make
test easily...


Manuel

= The Patch =

diff -u ospf6d.uptodate/kroute.c ospf6d.patch1/kroute.c
--- ospf6d.uptodate/kroute.cThu Sep 20 15:25:33 2012
+++ ospf6d.patch1/kroute.c  Thu Sep 27 18:01:37 2012
@@ -59,6 +59,8 @@
 intkr_redist_eval(struct kroute *, struct rroute *);
 void   kr_redistribute(struct kroute_node *);
 intkroute_compare(struct kroute_node *, struct kroute_node *);
+intkr_change_fib(struct kroute_node *, struct kroute *, int, int);
+intkr_delete_fib(struct kroute_node *);
 
 struct kroute_node *kroute_find(const struct in6_addr *, u_int8_t);
 struct kroute_node *kroute_matchgw(struct kroute_node *,
@@ -140,18 +142,102 @@
 }
 
 int
-kr_change(struct kroute *kroute)
+kr_change_fib(struct kroute_node *kr, struct kroute *kroute, int krcount,
+int action)
 {
+   int  i;
+   struct kroute_node  *kn, *nkn;
+
+   if (action == RTM_ADD) {
+   /*
+* First remove all stale multipath routes.
+* This step must be skipped when the action is RTM_CHANGE
+* because it is already a single path route that will be
+* changed.
+*/
+   for (kn = kr; kn != NULL; kn = nkn) {
+   for (i = 0; i < krcount; i++) {
+   if 
(IN6_ARE_ADDR_EQUAL(&kn->r.nexthop,&kroute[i].nexthop))
+   break;
+   }
+   nkn = kn->next;
+   if (i == krcount)
+   /* stale route */
+   if (kr_delete_fib(kn) == -1)
+   log_warnx("kr_delete_fib failed");
+   log_debug("kr_update_fib: before: %s%s",
+   log_in6addr(&kn->r.nexthop),
+   i == krcount ? " (deleted)" : "");
+   }
+   }
+
+   /*
+* now add or change the route
+*/
+   for (i = 0; i < krcount; i++) {
+   /* nexthop within 127/8 -> ignore silently */
+   if (kr && IN6_IS_ADDR_LOOPBACK(&kr->r.nexthop))
+   continue;
+
+   if (action == RTM_ADD && kr) {
+   for (kn = kr; kn != NULL; kn = kn->next) {
+   if 
(IN6_ARE_ADDR_EQUAL(&kn->r.nexthop,&kroute[i].nexthop))
+   break;
+   }
+
+   log_debug("kr_update_fib: after : %s%s",
+log_in6addr(&kroute[i].nexthop),
+kn == NULL ? " (added)" : "");
+
+   if (kn != NULL)
+   /* nexthop already present, skip it */
+   continue;
+   } else
+   /* modify first entry */
+   kn = kr;
+
+   /* send update */
+   if (send_rtmsg(kr_state.fd, action, &kroute[i]) == -1)
+   return (-1);
+
+   /* create new entry unless we are changing the first entry */
+   if (action == RTM_ADD)
+   if ((kn = calloc(1, sizeof(*kn))) == NULL)
+   fatal(NULL);
+
+   kn->r.prefix = kroute[i].prefix;
+   kn->r.prefixlen = kroute[i].prefixlen;
+   kn->r.nexthop = kroute[i].nexthop;
+   kn->r.scope = kroute[i].scope;
+   kn->r.flags = kroute[i].flags | F_OSPFD_INSERTED;
+   kn->r.ext_tag = kroute[i].ext_tag;
+   rtlabel_unref(kn->r.rtlabel);   /* for RTM_CHANGE */
+   kn->r.rtlabel = kroute[i].rtlabel;
+   if (action == RTM_ADD) {
+   if (kroute_insert(kn) == -1) {
+   log_debug("kr_update_fib: cannot insert %s",
+

QLogic device FCP RESPONSE: 0x2

2012-10-04 Thread mohit sah
*HI *I have* **qlogic* FC HBA card which is not detecting the LUN

I think the problem is with targeting...I have diabled acpicpu at boot time
and using OpenBSD 5.1 amd64

Any advice or help.
*

isp0* at pci4 dev 0 function 0 "QLogic ISP2432" rev 0x03: apic 9 int 6

*isp0*: board type 2422 rev 0x3, resident firmware rev 4.0.26

scsibus0 at *isp0*: 512 targets, WWPN 2124ff364ae8, WWNN
2024ff364ae8

*isp0*: 0.0.0 FCP RESPONSE: 0x2

*isp0*: 0.0.0 FCP RESPONSE: 0x2

*isp0*: 0.1.0 FCP RESPONSE: 0x2

*isp0*: 0.1.0 FCP RESPONSE: 0x2

isp1 at pci4 dev 0 function 1 "QLogic ISP2432" rev 0x03: apic 9 int 13

isp1: board type 2422 rev 0x3, resident firmware rev 4.0.26

scsibus1 at isp1: 512 targets, WWPN 2124ff364ae9, WWNN 2024ff364ae9

isp1: 0.0.0 FCP RESPONSE: 0x2

isp1: 0.0.0 FCP RESPONSE: 0x2

isp1: 0.1.0 FCP RESPONSE: 0x2

isp1: 0.1.0 FCP RESPONSE: 0x2
-
Complete dmesg can be shown
http://old.nabble.com/Mount-San-Disk-from-IBM-DS3400-tc34491545.html#