static ssize_t rxq_map_5t_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t len) { unsigned int res = 0, err = 0, sip, dip, ports, proto, port; int rxq; const char *name = attr->attr.name; if (!capable(CAP_NET_ADMIN)) return -EPERM; res = sscanf(buf, "%d %hhu.%hhu.%hhu.%hhu %hhu.%hhu.%hhu.%hhu %hu %hu %d", &port, (unsigned char *)(&sip), (unsigned char *)(&sip) + 1, (unsigned char *)(&sip) + 2, (unsigned char *)(&sip) + 3, (unsigned char *)(&dip), (unsigned char *)(&dip) + 1, (unsigned char *)(&dip) + 2, (unsigned char *)(&dip) + 3, (u16 *)&ports + 1, (u16 *)&ports, &rxq); if (res < 11) return -EINVAL; if (!strcmp(name, "udp4_drop") || !strcmp(name, "tcp4_drop")) rxq = -1; else if (!strcmp(name, "udp4_del") || !strcmp(name, "tcp4_del")) rxq = -2; if (name[0] == 't') proto = 6; /* tcp */ else proto = 17; /* udp */ err = pnc_ip4_5tuple_rxq(port, sip, dip, MV_BYTE_SWAP_32BIT(ports), proto, rxq); return err ? -EINVAL : len; }
/******************************************************************************* * boardEepromGet - Get board identification from the EEPROM * * DESCRIPTION: * * INPUT: * * OUTPUT: * None. * * RETURN: * *******************************************************************************/ MV_STATUS boardEepromGet(BOARD_DATA *boardData) { MV_TWSI_SLAVE twsiSlave; MV_TWSI_ADDR slave; MV_U32 tclk; tclk = mvBoardTclkGet(); /* Init TWSI first */ slave.type = ADDR7_BIT; slave.address = 0x0; mvTwsiInit(100000, tclk, &slave, 0); twsiSlave.slaveAddr.address = MV_BOARD_ID_EEPROM; twsiSlave.slaveAddr.type = ADDR7_BIT; twsiSlave.validOffset = MV_TRUE; twsiSlave.offset = MV_BOARD_ID_EEPROM_OFFSET0; twsiSlave.moreThen256 = MV_FALSE; if(MV_OK != mvTwsiRead (&twsiSlave, (MV_U8*)boardData, sizeof(BOARD_DATA))) { /*mvOsOutput("Fail to read Board EEPROM from offset0");*/ return MV_FAIL; } #if defined(MV_CPU_LE) boardData->magic = MV_BYTE_SWAP_32BIT(boardData->magic); boardData->boardId = MV_BYTE_SWAP_16BIT(boardData->boardId); boardData->reserved1 = MV_BYTE_SWAP_32BIT(boardData->reserved1); boardData->reserved2 = MV_BYTE_SWAP_32BIT(boardData->reserved2); #endif if(boardData->magic == MV_BOARD_I2C_MAGIC) { return MV_OK; } twsiSlave.offset = MV_BOARD_ID_EEPROM_OFFSET1; twsiSlave.moreThen256 = MV_TRUE; if(MV_OK != mvTwsiRead (&twsiSlave, (MV_U8*)boardData, sizeof(BOARD_DATA))) { /*mvOsOutput("Fail to read Board EEPROM from offset1");*/ return MV_FAIL; } #if defined(MV_CPU_LE) boardData->magic = MV_BYTE_SWAP_32BIT(boardData->magic); boardData->boardId = MV_BYTE_SWAP_16BIT(boardData->boardId); boardData->reserved1 = MV_BYTE_SWAP_32BIT(boardData->reserved1); boardData->reserved2 = MV_BYTE_SWAP_32BIT(boardData->reserved2); #endif if(boardData->magic == MV_BOARD_I2C_MAGIC) { return MV_OK; } return MV_FAIL; }