----- Original Message -----
>Date: Mon, 05 Oct 2009 08:56:09 +0900
>From: Jorgen Lundman <[email protected]>
>To: Masayuki Murayama <[email protected]>
>CC: [email protected]
>Subject: Re: [driver-discuss] rge and missing multicast/broadcast packets
>
>
>
>I have currently no way to compile kernel/modules for Solaris, but I would be
 
>happy to try my test case if there was a compiled module. (preferably 64 bit 
>though).
>
>Lund

I will prepare the binary module. What version of solaris/opensolaris
do you use? Let me know the output of 'uname -a'.

-masa

>
>Masayuki Murayama wrote:
>>> I have loaded the gani-2.6.4 driver instead of the
>>> rge driver. I can confirm that multicast and
>>> broadcast packets work just fine with this driver
>>> without any special changes.  I would propose this as
>>> a work-around for now.
>>
>> I investigated the multicast hash register setting in gani and rge, and fou
nd
>> the difference that rge doesn't set the multicast hash to accept all multic
ast
>> packets in promiscuous mode. Could you test a patch bellow?
>>
>> -masa
>>
>> %diff -c rge_chip.c.b116 rge_chip.c.mcast
>> *** rge_chip.c.b116     Sat Oct  3 11:08:00 2009
>> --- rge_chip.c.mcast    Sat Oct  3 11:33:28 2009
>> ***************
>> *** 1203,1210 ****
>>          if (rgep->chipid.mac_ver == MAC_VER_8169SC) {
>>                  rge_reg_set8(rgep, RT_93c46_COMMOND_REG, RT_93c46_MODE_CON
FIG);
>>          }
>> !       rge_reg_put32(rgep, MULTICAST_0_REG, RGE_BSWAP_32(hashp[0]));
>> !       rge_reg_put32(rgep, MULTICAST_4_REG, RGE_BSWAP_32(hashp[1]));
>>
>>          /*
>>           * Return to normal network/host communication mode
>> --- 1203,1215 ----
>>          if (rgep->chipid.mac_ver == MAC_VER_8169SC) {
>>                  rge_reg_set8(rgep, RT_93c46_COMMOND_REG, RT_93c46_MODE_CON
FIG);
>>          }
>> !       if (rgep->promisc) {
>> !               rge_reg_put32(rgep, MULTICAST_0_REG, 0xffffffffU);
>> !               rge_reg_put32(rgep, MULTICAST_4_REG, 0xffffffffU);
>> !       } else {
>> !               rge_reg_put32(rgep, MULTICAST_0_REG, RGE_BSWAP_32(hashp[0])
);
>> !               rge_reg_put32(rgep, MULTICAST_4_REG, RGE_BSWAP_32(hashp[1])
);
>> !       }
>>
>>          /*
>>           * Return to normal network/host communication mode
>> ***************
>> *** 1252,1257 ****
>> --- 1257,1263 ----
>>          case RGE_SET_PROMISC:
>>                  /* Set or clear the PROMISCUOUS mode bit */
>>                  rge_set_promisc(rgep);
>> +               rge_set_multi_addr(rgep);
>>                  break;
>>          default:
>>                  break;
>
>-- 
>Jorgen Lundman       | <[email protected]>
>Unix Administrator   | +81 (0)3 -5456-2687 ext 1017 (work)
>Shibuya-ku, Tokyo    | +81 (0)90-5578-8500          (cell)
>Japan                | +81 (0)3 -3375-1767          (home)

_______________________________________________
driver-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/driver-discuss

Reply via email to