kernel: b53: fix untagged shift for BCM5365
The BCM5365 needs a shift of 7 bits and not 6 bits like the BCM5325 for the untagged ports. Thank you Russell for reporting this and testing the patch. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> SVN-Revision: 38793
This commit is contained in:
parent
736db5f17c
commit
0cdab0237d
2 changed files with 8 additions and 4 deletions
|
@ -189,7 +189,8 @@ static void b53_set_vlan_entry(struct b53_device *dev, u16 vid, u16 members,
|
|||
u32 entry = 0;
|
||||
|
||||
if (members) {
|
||||
entry = (untag << VA_UNTAG_S) | members;
|
||||
entry = ((untag & VA_UNTAG_MASK_25) << VA_UNTAG_S_25) |
|
||||
members;
|
||||
if (dev->core_rev >= 3)
|
||||
entry |= VA_VALID_25_R4 | vid << VA_VID_HIGH_S;
|
||||
else
|
||||
|
@ -203,7 +204,8 @@ static void b53_set_vlan_entry(struct b53_device *dev, u16 vid, u16 members,
|
|||
u16 entry = 0;
|
||||
|
||||
if (members)
|
||||
entry = (untag << VA_UNTAG_S) | members | VA_VALID_65;
|
||||
entry = ((untag & VA_UNTAG_MASK_65) << VA_UNTAG_S_65) |
|
||||
members | VA_VALID_65;
|
||||
|
||||
b53_write16(dev, B53_VLAN_PAGE, B53_VLAN_WRITE_65, entry);
|
||||
b53_write16(dev, B53_VLAN_PAGE, B53_VLAN_TABLE_ACCESS_65, vid |
|
||||
|
|
|
@ -282,8 +282,10 @@
|
|||
#define B53_VLAN_WRITE_65 0x0a
|
||||
#define B53_VLAN_READ 0x0c
|
||||
#define VA_MEMBER_MASK 0x3f
|
||||
#define VA_UNTAG_S 6
|
||||
#define VA_UNTAG_MASK (0x3f << VA_UNTAG_S)
|
||||
#define VA_UNTAG_S_25 6
|
||||
#define VA_UNTAG_MASK_25 0x3f
|
||||
#define VA_UNTAG_S_65 7
|
||||
#define VA_UNTAG_MASK_65 0x1f
|
||||
#define VA_VID_HIGH_S 12
|
||||
#define VA_VID_HIGH_MASK (0xffff << VA_VID_HIGH_S)
|
||||
#define VA_VALID_25 BIT(20)
|
||||
|
|
Loading…
Reference in a new issue