示例#1
0
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;
}
示例#2
0
/*******************************************************************************
* 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;
}