[Bridge] Is bridgeing possible with kernel 2.6.10

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Juergen Pfeiffer schrieb:
> Hi
>
> I didn't get bridgeing to work with Linux kernel 2.6.10 (coldfire 5485) 
> yet. When i try to configure bridgeing
> with "brctl", everything seems to be ok, but i if i try to ping through 
> my bridge, i see ARP-Request arriving on the other side, but the
> ARP-Responses do not go back through the bridge.
>   

Now i found the error in the coldfire specific ethernet driver: 
"drivers/net/fec/fec.c"
The driver did not set Promiscuouse Mode correct in Hardware Registers:

function fec_set_multicast_list() with error:
*void fec_set_multicast_list(struct net_device *dev)
{
    // Pointer to the address list
    struct dev_mc_list *dmi;

    unsigned int crc, data;
    int i, j, k;

    // Receive the base address
    unsigned long base_addr = (unsigned long) dev->base_addr;

    if (dev->flags & IFF_PROMISC || dev->flags & IFF_ALLMULTI)
    {
        // Allow all incoming frames
        FEC_GALR(base_addr) = 0xFFFFFFFF;
        FEC_GAUR(base_addr) = 0xFFFFFFFF;
        return;
    }
...
*


function fec_set_multicast_list() correct:
*void fec_set_multicast_list(struct net_device *dev)
{
    // Pointer to the address list
    struct dev_mc_list *dmi;

    unsigned int crc, data;
    int i, j, k;

    // Receive the base address
    unsigned long base_addr = (unsigned long) dev->base_addr;

    if (dev->flags & IFF_PROMISC)
    {
        // Allow all incoming frames
        if ((FEC_RCR(base_addr) & FEC_RCR_PROM)==0) {
            FEC_ECR(base_addr) &= ~FEC_ECR_ETHEREN;
            FEC_RCR(base_addr) |= FEC_RCR_PROM;
            FEC_ECR(base_addr) |= FEC_ECR_ETHEREN;
        }
        return;
    }
    if ((FEC_RCR(base_addr) & FEC_RCR_PROM)!=0) {
        FEC_ECR(base_addr) &= ~FEC_ECR_ETHEREN;
        FEC_RCR(base_addr) &= ~FEC_RCR_PROM;
        FEC_ECR(base_addr) |= FEC_ECR_ETHEREN;
    }
    if (dev->flags & IFF_ALLMULTI)
    {
        // Allow all incoming frames
        FEC_GALR(base_addr) = 0xFFFFFFFF;
        FEC_GAUR(base_addr) = 0xFFFFFFFF;
        return;
    }
...
*

after this the bridge worked fine!


-- 
------------------------------------------------------------------------
Jürgen Pfeiffer 	
	
	* _mailto:j.pfeiffer at seskion.de_
SesKion Softwareentwicklung und System Konzeption GmbH 	
	
	( : +49-711-9905814
Karlsruher Str. 11/1 	
	
	Fax: +49-711-9905827
D-70771 Leinfelden-Echterdingen 	
	
	1 _http://www.seskion.de_

------------------------------------------------------------------------
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osdl.org/pipermail/bridge/attachments/20060814/048fffd5/attachment.htm 


[Index of Archives]     [Netdev]     [AoE Tools]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux