Changeset 22198


Ignore:
Timestamp:
2010-07-15T15:05:29+02:00 (6 years ago)
Author:
juhosg
Message:

generic: rtl8366: make rtl8366_{g,s}et_pvid static

Location:
trunk/target/linux/generic/files/drivers/net/phy
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c

    r22197 r22198  
    350350EXPORT_SYMBOL_GPL(rtl8366_set_vlan); 
    351351 
     352static int rtl8366_get_pvid(struct rtl8366_smi *smi, int port, int *val) 
     353{ 
     354        struct rtl8366_vlan_mc vlanmc; 
     355        int err; 
     356        int index; 
     357 
     358        err = smi->ops->get_mc_index(smi, port, &index); 
     359        if (err) 
     360                return err; 
     361 
     362        err = smi->ops->get_vlan_mc(smi, index, &vlanmc); 
     363        if (err) 
     364                return err; 
     365 
     366        *val = vlanmc.vid; 
     367        return 0; 
     368} 
     369 
     370static int rtl8366_set_pvid(struct rtl8366_smi *smi, unsigned port, 
     371                            unsigned vid) 
     372{ 
     373        struct rtl8366_vlan_mc vlanmc; 
     374        struct rtl8366_vlan_4k vlan4k; 
     375        int err; 
     376        int i; 
     377 
     378        /* Try to find an existing MC entry for this VID */ 
     379        for (i = 0; i < smi->num_vlan_mc; i++) { 
     380                err = smi->ops->get_vlan_mc(smi, i, &vlanmc); 
     381                if (err) 
     382                        return err; 
     383 
     384                if (vid == vlanmc.vid) { 
     385                        err = smi->ops->set_vlan_mc(smi, i, &vlanmc); 
     386                        if (err) 
     387                                return err; 
     388 
     389                        err = smi->ops->set_mc_index(smi, port, i); 
     390                        return err; 
     391                } 
     392        } 
     393 
     394        /* We have no MC entry for this VID, try to find an empty one */ 
     395        for (i = 0; i < smi->num_vlan_mc; i++) { 
     396                err = smi->ops->get_vlan_mc(smi, i, &vlanmc); 
     397                if (err) 
     398                        return err; 
     399 
     400                if (vlanmc.vid == 0 && vlanmc.member == 0) { 
     401                        /* Update the entry from the 4K table */ 
     402                        err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); 
     403                        if (err) 
     404                                return err; 
     405 
     406                        vlanmc.vid = vid; 
     407                        vlanmc.member = vlan4k.member; 
     408                        vlanmc.untag = vlan4k.untag; 
     409                        vlanmc.fid = vlan4k.fid; 
     410                        err = smi->ops->set_vlan_mc(smi, i, &vlanmc); 
     411                        if (err) 
     412                                return err; 
     413 
     414                        err = smi->ops->set_mc_index(smi, port, i); 
     415                        return err; 
     416                } 
     417        } 
     418 
     419        /* MC table is full, try to find an unused entry and replace it */ 
     420        for (i = 0; i < smi->num_vlan_mc; i++) { 
     421                int used; 
     422 
     423                err = rtl8366_mc_is_used(smi, i, &used); 
     424                if (err) 
     425                        return err; 
     426 
     427                if (!used) { 
     428                        /* Update the entry from the 4K table */ 
     429                        err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); 
     430                        if (err) 
     431                                return err; 
     432 
     433                        vlanmc.vid = vid; 
     434                        vlanmc.member = vlan4k.member; 
     435                        vlanmc.untag = vlan4k.untag; 
     436                        vlanmc.fid = vlan4k.fid; 
     437                        err = smi->ops->set_vlan_mc(smi, i, &vlanmc); 
     438                        if (err) 
     439                                return err; 
     440 
     441                        err = smi->ops->set_mc_index(smi, port, i); 
     442                        return err; 
     443                } 
     444        } 
     445 
     446        dev_err(smi->parent, 
     447                "all VLAN member configurations are in use\n"); 
     448 
     449        return -ENOSPC; 
     450} 
     451 
    352452int rtl8366_reset_vlan(struct rtl8366_smi *smi) 
    353453{ 
     
    387487} 
    388488EXPORT_SYMBOL_GPL(rtl8366_reset_vlan); 
    389  
    390 int rtl8366_get_pvid(struct rtl8366_smi *smi, int port, int *val) 
    391 { 
    392         struct rtl8366_vlan_mc vlanmc; 
    393         int err; 
    394         int index; 
    395  
    396         err = smi->ops->get_mc_index(smi, port, &index); 
    397         if (err) 
    398                 return err; 
    399  
    400         err = smi->ops->get_vlan_mc(smi, index, &vlanmc); 
    401         if (err) 
    402                 return err; 
    403  
    404         *val = vlanmc.vid; 
    405         return 0; 
    406 } 
    407 EXPORT_SYMBOL_GPL(rtl8366_get_pvid); 
    408  
    409 int rtl8366_set_pvid(struct rtl8366_smi *smi, unsigned port, unsigned vid) 
    410 { 
    411         struct rtl8366_vlan_mc vlanmc; 
    412         struct rtl8366_vlan_4k vlan4k; 
    413         int err; 
    414         int i; 
    415  
    416         /* Try to find an existing MC entry for this VID */ 
    417         for (i = 0; i < smi->num_vlan_mc; i++) { 
    418                 err = smi->ops->get_vlan_mc(smi, i, &vlanmc); 
    419                 if (err) 
    420                         return err; 
    421  
    422                 if (vid == vlanmc.vid) { 
    423                         err = smi->ops->set_vlan_mc(smi, i, &vlanmc); 
    424                         if (err) 
    425                                 return err; 
    426  
    427                         err = smi->ops->set_mc_index(smi, port, i); 
    428                         return err; 
    429                 } 
    430         } 
    431  
    432         /* We have no MC entry for this VID, try to find an empty one */ 
    433         for (i = 0; i < smi->num_vlan_mc; i++) { 
    434                 err = smi->ops->get_vlan_mc(smi, i, &vlanmc); 
    435                 if (err) 
    436                         return err; 
    437  
    438                 if (vlanmc.vid == 0 && vlanmc.member == 0) { 
    439                         /* Update the entry from the 4K table */ 
    440                         err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); 
    441                         if (err) 
    442                                 return err; 
    443  
    444                         vlanmc.vid = vid; 
    445                         vlanmc.member = vlan4k.member; 
    446                         vlanmc.untag = vlan4k.untag; 
    447                         vlanmc.fid = vlan4k.fid; 
    448                         err = smi->ops->set_vlan_mc(smi, i, &vlanmc); 
    449                         if (err) 
    450                                 return err; 
    451  
    452                         err = smi->ops->set_mc_index(smi, port, i); 
    453                         return err; 
    454                 } 
    455         } 
    456  
    457         /* MC table is full, try to find an unused entry and replace it */ 
    458         for (i = 0; i < smi->num_vlan_mc; i++) { 
    459                 int used; 
    460  
    461                 err = rtl8366_mc_is_used(smi, i, &used); 
    462                 if (err) 
    463                         return err; 
    464  
    465                 if (!used) { 
    466                         /* Update the entry from the 4K table */ 
    467                         err = smi->ops->get_vlan_4k(smi, vid, &vlan4k); 
    468                         if (err) 
    469                                 return err; 
    470  
    471                         vlanmc.vid = vid; 
    472                         vlanmc.member = vlan4k.member; 
    473                         vlanmc.untag = vlan4k.untag; 
    474                         vlanmc.fid = vlan4k.fid; 
    475                         err = smi->ops->set_vlan_mc(smi, i, &vlanmc); 
    476                         if (err) 
    477                                 return err; 
    478  
    479                         err = smi->ops->set_mc_index(smi, port, i); 
    480                         return err; 
    481                 } 
    482         } 
    483  
    484         dev_err(smi->parent, 
    485                 "all VLAN member configurations are in use\n"); 
    486  
    487         return -ENOSPC; 
    488 } 
    489 EXPORT_SYMBOL_GPL(rtl8366_set_pvid); 
    490489 
    491490#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS 
  • trunk/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h

    r22197 r22198  
    9999                     u32 fid); 
    100100int rtl8366_reset_vlan(struct rtl8366_smi *smi); 
    101 int rtl8366_get_pvid(struct rtl8366_smi *smi, int port, int *val); 
    102 int rtl8366_set_pvid(struct rtl8366_smi *smi, unsigned port, unsigned vid); 
    103101 
    104102#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS 
Note: See TracChangeset for help on using the changeset viewer.