Date:2010-06-26 21:16:20 (13 years 9 months ago)
Author:juhosg
Commit:22e4a8566f390477188b6ea8c0c6ac31382c0a2e
Message:generic: rtl8366: add common vlan_4k structure

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21915 3c298f89-4303-0410-b956-a3cf2f4a3e73
Files: target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h (1 diff)
target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c (7 diffs)
target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c (7 diffs)

Change Details

target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h
4242    u8 fid;
4343};
4444
45struct rtl8366_vlan_4k {
46    u16 vid;
47    u8 untag;
48    u8 member;
49    u8 fid;
50};
51
4552int rtl8366_smi_init(struct rtl8366_smi *smi);
4653void rtl8366_smi_cleanup(struct rtl8366_smi *smi);
4754int rtl8366_smi_write_reg(struct rtl8366_smi *smi, u32 addr, u32 data);
target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c
372372}
373373
374374static int rtl8366rb_get_vlan_4k(struct rtl8366rb *rtl, u32 vid,
375                 struct rtl8366rb_vlan_4k *vlan4k)
375                 struct rtl8366_vlan_4k *vlan4k)
376376{
377377    struct rtl8366_smi *smi = &rtl->smi;
378    struct rtl8366rb_vlan_4k vlan4k_priv;
378379    int err;
379380    u32 data;
380381    u16 *tableaddr;
381382
382    memset(vlan4k, '\0', sizeof(struct rtl8366rb_vlan_4k));
383    vlan4k->vid = vid;
383    memset(vlan4k, '\0', sizeof(struct rtl8366_vlan_4k));
384    vlan4k_priv.vid = vid;
384385
385386    if (vid >= RTL8366_NUM_VIDS)
386387        return -EINVAL;
387388
388    tableaddr = (u16 *)vlan4k;
389    tableaddr = (u16 *)&vlan4k_priv;
389390
390391    /* write VID */
391392    data = *tableaddr;
...... 
419420    if (err)
420421        return err;
421422    *tableaddr = data;
423
422424    vlan4k->vid = vid;
425    vlan4k->untag = vlan4k_priv.untag;
426    vlan4k->member = vlan4k_priv.member;
427    vlan4k->fid = vlan4k_priv.fid;
423428
424429    return 0;
425430}
426431
427432static int rtl8366rb_set_vlan_4k(struct rtl8366rb *rtl,
428                 const struct rtl8366rb_vlan_4k *vlan4k)
433                 const struct rtl8366_vlan_4k *vlan4k)
429434{
430435    struct rtl8366_smi *smi = &rtl->smi;
436    struct rtl8366rb_vlan_4k vlan4k_priv;
431437    int err;
432438    u32 data;
433439    u16 *tableaddr;
...... 
438444        vlan4k->fid > RTL8366S_FIDMAX)
439445        return -EINVAL;
440446
441    tableaddr = (u16 *)vlan4k;
447    vlan4k_priv.vid = vlan4k->vid;
448    vlan4k_priv.untag = vlan4k->untag;
449    vlan4k_priv.member = vlan4k->member;
450    vlan4k_priv.fid = vlan4k->fid;
451
452    tableaddr = (u16 *)&vlan4k_priv;
442453
443454    data = *tableaddr;
444455
...... 
645656{
646657    int i;
647658    struct rtl8366_vlan_mc vlanmc;
648    struct rtl8366rb_vlan_4k vlan4k;
659    struct rtl8366_vlan_4k vlan4k;
649660
650661    if (port >= RTL8366_NUM_PORTS || val >= RTL8366_NUM_VIDS)
651662        return -EINVAL;
...... 
741752
742753static int rtl8366rb_reset_vlan(struct rtl8366rb *rtl)
743754{
744    struct rtl8366rb_vlan_4k vlan4k;
755    struct rtl8366_vlan_4k vlan4k;
745756    struct rtl8366_vlan_mc vlanmc;
746757    int err;
747758    int i;
...... 
11671178    int i;
11681179    u32 len = 0;
11691180    struct rtl8366_vlan_mc vlanmc;
1170    struct rtl8366rb_vlan_4k vlan4k;
1181    struct rtl8366_vlan_4k vlan4k;
11711182    struct rtl8366rb *rtl = sw_to_rtl8366rb(dev);
11721183    char *buf = rtl->buf;
11731184
...... 
13331344                      struct switch_val *val)
13341345{
13351346    struct rtl8366_vlan_mc vlanmc;
1336    struct rtl8366rb_vlan_4k vlan4k;
1347    struct rtl8366_vlan_4k vlan4k;
13371348    struct rtl8366rb *rtl = sw_to_rtl8366rb(dev);
13381349    struct switch_port *port;
13391350    int i;
target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c
373373}
374374
375375static int rtl8366s_get_vlan_4k(struct rtl8366s *rtl, u32 vid,
376                struct rtl8366s_vlan_4k *vlan4k)
376                struct rtl8366_vlan_4k *vlan4k)
377377{
378378    struct rtl8366_smi *smi = &rtl->smi;
379    struct rtl8366s_vlan_4k vlan4k_priv;
379380    int err;
380381    u32 data;
381382    u16 *tableaddr;
382383
383    memset(vlan4k, '\0', sizeof(struct rtl8366s_vlan_4k));
384    vlan4k->vid = vid;
384    memset(vlan4k, '\0', sizeof(struct rtl8366_vlan_4k));
385    vlan4k_priv.vid = vid;
385386
386387    if (vid >= RTL8366_NUM_VIDS)
387388        return -EINVAL;
388389
389    tableaddr = (u16 *)vlan4k;
390    tableaddr = (u16 *)&vlan4k_priv;
390391
391392    /* write VID */
392393    data = *tableaddr;
...... 
413414        return err;
414415
415416    *tableaddr = data;
417
416418    vlan4k->vid = vid;
419    vlan4k->untag = vlan4k_priv.untag;
420    vlan4k->member = vlan4k_priv.member;
421    vlan4k->fid = vlan4k_priv.fid;
417422
418423    return 0;
419424}
420425
421426static int rtl8366s_set_vlan_4k(struct rtl8366s *rtl,
422                const struct rtl8366s_vlan_4k *vlan4k)
427                const struct rtl8366_vlan_4k *vlan4k)
423428{
424429    struct rtl8366_smi *smi = &rtl->smi;
430    struct rtl8366s_vlan_4k vlan4k_priv;
425431    int err;
426432    u32 data;
427433    u16 *tableaddr;
...... 
432438        vlan4k->fid > RTL8366S_FIDMAX)
433439        return -EINVAL;
434440
435    tableaddr = (u16 *)vlan4k;
441    vlan4k_priv.vid = vlan4k->vid;
442    vlan4k_priv.untag = vlan4k->untag;
443    vlan4k_priv.member = vlan4k->member;
444    vlan4k_priv.fid = vlan4k->fid;
445
446    tableaddr = (u16 *)&vlan4k_priv;
436447
437448    data = *tableaddr;
438449
...... 
612623{
613624    int i;
614625    struct rtl8366_vlan_mc vlanmc;
615    struct rtl8366s_vlan_4k vlan4k;
626    struct rtl8366_vlan_4k vlan4k;
616627
617628    if (port >= RTL8366_NUM_PORTS || val >= RTL8366_NUM_VIDS)
618629        return -EINVAL;
...... 
708719
709720static int rtl8366s_reset_vlan(struct rtl8366s *rtl)
710721{
711    struct rtl8366s_vlan_4k vlan4k;
722    struct rtl8366_vlan_4k vlan4k;
712723    struct rtl8366_vlan_mc vlanmc;
713724    int err;
714725    int i;
...... 
11341145    int i;
11351146    u32 len = 0;
11361147    struct rtl8366_vlan_mc vlanmc;
1137    struct rtl8366s_vlan_4k vlan4k;
1148    struct rtl8366_vlan_4k vlan4k;
11381149    struct rtl8366s *rtl = sw_to_rtl8366s(dev);
11391150    char *buf = rtl->buf;
11401151
...... 
13011312                      struct switch_val *val)
13021313{
13031314    struct rtl8366_vlan_mc vlanmc;
1304    struct rtl8366s_vlan_4k vlan4k;
1315    struct rtl8366_vlan_4k vlan4k;
13051316    struct rtl8366s *rtl = sw_to_rtl8366s(dev);
13061317    struct switch_port *port;
13071318    int i;

Archive Download the corresponding diff file



interactive