static void pppoev6_mac6_loop_dev(void) { #define PPPOEV6_SESSION_ID 0xfffe fal_pppoe_session_t ptbl; memset(&ptbl, 0, sizeof(fal_pppoe_session_t)); aos_printk("%s: set MAC6 as loopback device\n", __func__); ptbl.session_id = PPPOEV6_SESSION_ID; ptbl.multi_session = 1; ptbl.uni_session = 1; ptbl.entry_id = 0xe; /* set the PPPoE edit reg (0x2200), and PPPoE session reg (0x5f000) */ if (isis_pppoe_session_table_add(0, &ptbl) == SW_OK) { isis_pppoe_session_id_set(0, ptbl.entry_id, ptbl.session_id); aos_printk("%s: pppoe session id: %d added into entry: %d \n", __func__, ptbl.session_id, ptbl.entry_id); } else { aos_printk("%s: failed on adding pppoe session id: %d\n", __func__, ptbl.session_id); } /* PPPoE entry 0 */ athrs17_reg_write(0x2200, PPPOEV6_SESSION_ID); aos_printk("%s: end of function... \n", __func__); }
static void pppoev6_mac6_stop_learning(void) { /* do not disable this port if some other registers are already filled in to prevent setting conflict */ int val = S17_P6PAD_MODE_REG_VALUE; if ( val != (1<<24)) { aos_printk("%s: MAC 6 already being used!\n", __FUNCTION__); return; } /* clear the MAC6 learning bit */ athrs17_reg_write(0x6a8, athrs17_reg_read(0x6a8) & ~(1<<20)); /* force loopback mode */ athrs17_reg_write(0x94, 0x7e); athrs17_reg_write(0xb4, 0x10); }
static void pppoev6_remove_parser(uint32_t entry_id) { aos_printk("%s: clear entry id: %d\n", __func__, entry_id); /* clear the session id in the PPPoE parser engine */ athrs17_reg_write(PPPOE_SESSION_OFFSET + PPPOE_SESSION_E_OFFSET * entry_id, 0); }
int do_ethreg (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { int rcode = 0; /* * We use the last specified parameters, unless new ones are * entered. */ if ((flag & CMD_FLAG_REPEAT) == 0) { if (argc == 2) { reg = simple_strtoul(argv[1], NULL, 10); rcode = READ_MAC; } if (argc == 3) { reg = simple_strtoul(argv[1], NULL, 10); val = simple_strtoul(argv[2],NULL,10); rcode = WRITE_MAC; } if (argc == 4) { if(*argv[1] == 'p') { portnum = simple_strtoul(argv[2], NULL, 10); reg = simple_strtoul(argv[3],NULL,10); rcode = READ_PHY; } else return 1; } if (argc == 5) { if(*argv[1] == 'p') { portnum = simple_strtoul(argv[2], NULL, 10); reg = simple_strtoul(argv[3],NULL,10); val = simple_strtoul(argv[4],NULL,10); rcode = WRITE_PHY; } else return 1; } if ((argc > 4) && (argc < 2)) return 1; } #ifdef CONFIG_AR7242_S16_PHY if(rcode == READ_PHY) { rd_value = ag7240_miiphy_read("eth0",portnum,reg); printf("Read Reg: 0x%08x = 0x%08x\n",reg,rd_value); } else if(rcode == READ_MAC) { rd_value = athrs16_reg_read(reg); printf("Read Reg: 0x%08x = 0x%08x\n",reg,rd_value); } else if(rcode == WRITE_PHY) { rd_value = ag7240_miiphy_read("eth0",portnum,reg); ag7240_miiphy_write("eth0",portnum,reg,val); printf("Write Reg: 0x%08x: Oldval = 0x%08x Newval = 0x%08x\n", reg, rd_value, val); } else if(rcode == WRITE_MAC) { rd_value = athrs16_reg_read(reg); athrs16_reg_write(reg,val); printf("Write Reg: 0x%08x: Oldval = 0x%08x Newval = 0x%08x\n", reg, rd_value, val); } else return 1; #endif #ifdef CFG_ATHRS26_PHY if(rcode == READ_PHY) { rd_value = s26_rd_phy(portnum,reg); printf("Read Reg: 0x%08x = 0x%08x\n",reg,rd_value); } else if(rcode == READ_MAC) { rd_value = athrs26_reg_read(reg); printf("Read Reg: 0x%08x = 0x%08x\n",reg,rd_value); } else if(rcode == WRITE_PHY) { rd_value = s26_rd_phy(portnum,reg); s26_wr_phy(portnum,reg,val); printf("Write Reg: 0x%08x: Oldval = 0x%08x Newval = 0x%08x\n", reg, rd_value, val); } else if(rcode == WRITE_MAC) { rd_value = athrs26_reg_read(reg); athrs26_reg_write(reg,val); printf("Write Reg: 0x%08x: Oldval = 0x%08x Newval = 0x%08x\n", reg, rd_value, val); } else return 1; #endif #ifdef CFG_ATHRS27_PHY if(rcode == READ_PHY) { rd_value = s27_rd_phy(portnum,reg); printf("Read Reg: 0x%08x = 0x%08x\n",reg,rd_value); } else if(rcode == READ_MAC) { rd_value = athrs27_reg_read(reg); printf("Read Reg: 0x%08x = 0x%08x\n",reg,rd_value); } else if(rcode == WRITE_PHY) { rd_value = s27_rd_phy(portnum,reg); s27_wr_phy(portnum,reg,val); printf("Write Reg: 0x%08x: Oldval = 0x%08x Newval = 0x%08x\n", reg, rd_value, val); } else if(rcode == WRITE_MAC) { rd_value = athrs27_reg_read(reg); athrs27_reg_write(reg,val); printf("Write Reg: 0x%08x: Oldval = 0x%08x Newval = 0x%08x\n", reg, rd_value, val); } else return 1; #endif #ifdef CONFIG_F1E_PHY if(rcode == READ_PHY) { rd_value = f1e_rd_phy(portnum, reg); printf("Read Reg: 0x%08x = 0x%08x\n",reg,rd_value); } else if(rcode == WRITE_PHY) { rd_value = f1e_rd_phy(portnum, reg); f1e_wr_phy(portnum, reg, val); printf("Write Reg: 0x%08x: Oldval = 0x%08x Newval = 0x%08x\n", reg, rd_value, val); } else return 1; #endif #ifdef CONFIG_ATHRS17_PHY if(rcode == READ_PHY) { rd_value = s17_rd_phy(portnum,reg); printf("Read Reg: 0x%08x = 0x%08x\n",reg,rd_value); } else if(rcode == READ_MAC) { rd_value = athrs17_reg_read(reg); printf("Read Reg: 0x%08x = 0x%08x\n",reg,rd_value); } else if(rcode == WRITE_PHY) { rd_value = s17_rd_phy(portnum,reg); s17_wr_phy(portnum,reg,val); printf("Write Reg: 0x%08x: Oldval = 0x%08x Newval = 0x%08x\n", reg, rd_value, val); } else if(rcode == WRITE_MAC) { rd_value = athrs17_reg_read(reg); athrs17_reg_write(reg,val); printf("Write Reg: 0x%08x: Oldval = 0x%08x Newval = 0x%08x\n", reg, rd_value, val); } else return 1; #endif #ifdef CONFIG_ATHRS26E_PHY if(rcode == READ_PHY) { rd_value = s26e_rd_phy(portnum,reg); printf("Read Reg: 0x%08x = 0x%08x\n",reg,rd_value); } else if(rcode == READ_MAC) { rd_value = athrs26e_reg_read(reg); printf("Read Reg: 0x%08x = 0x%08x\n",reg,rd_value); } else if(rcode == WRITE_PHY) { rd_value = s26e_rd_phy(portnum,reg); s26e_wr_phy(portnum,reg,val); printf("Write Reg: 0x%08x: Oldval = 0x%08x Newval = 0x%08x\n", reg, rd_value, val); } else if(rcode == WRITE_MAC) { rd_value = athrs26e_reg_read(reg); athrs26e_reg_write(reg,val); printf("Write Reg: 0x%08x: Oldval = 0x%08x Newval = 0x%08x\n", reg, rd_value, val); } else return 1; #endif return 0; }