[dpdk-dev] [PATCH v2] net/tap: allow user mac to be passed as args
Ferruh Yigit
ferruh.yigit at intel.com
Tue Jan 16 12:32:48 CET 2018
On 12/21/2017 4:01 PM, Vipin Varghese wrote:
> Added fixes for user TAP user MAC
> 1) user format to RTE_PMD_REGISTER_PARAM_STRING
> 2) TAP to the RTE_LOG in absence of dynamic RTE_LOG
> 3) Boundary case for MAC string added
> > ---------------------------------------------------------------
>
> Other Details:
> 1) not to extract "string to mac" conversion to its own function
> 2) set_mac_type does not take any pmd or device name
> 3) Segault for boundary cases 'mac="01:01:01:01:01:01', not found
> 4) Added user MAC format string
Hi Vipin,
Patch version changes shouldn't be part of git commit. But it is good to put
them after "---" in commit log. Can you please update the commit log?
Also please add maintainer to the cc/to .
>
> Signed-off-by: Vipin Varghese <vipin.varghese at intel.com>
<...>
> - strncpy(macTemp, value, 18);
> -
> - macByte = strtok(macTemp, ":");
> - while ((macByte != NULL) &&
> - (strspn(macByte, "0123456789ABCDEFabcdef")) &&
> - (strspn((macByte + 1), "0123456789ABCDEFabcdef")) &&
> - (strlen(macByte) == 2)) {
> - user_mac[index] = strtoul(macByte, NULL, 16);
> - macByte = strtok(NULL, ":");
> + strncpy(mac_temp, value, 18);
> + mac_temp[19] = "\0";
This cause a build error [1], should be used '\0':
[1]
...drivers/net/tap/rte_eth_tap.c: In function ‘set_mac_type’:
...drivers/net/tap/rte_eth_tap.c:1467:18: error: assignment makes integer from
pointer without a cast [-Werror=int-conversion]
mac_temp[19] = "\0";
^
<....>
> - ETH_TAP_IFACE_ARG "=<string> "
> - ETH_TAP_SPEED_ARG "=<int> "
> - ETH_TAP_MAC_ARG "=" ETH_TAP_MAC_FIXED " "
> - ETH_TAP_REMOTE_ARG "=<string>");
> + ETH_TAP_IFACE_ARG "=<string> "
> + ETH_TAP_SPEED_ARG "=<int> "
> + ETH_TAP_MAC_ARG "=" ETH_TAP_MAC_FIXED "|" ETH_TAP_USER_MAC_FMT " "
> + ETH_TAP_REMOTE_ARG "=<string>");
This also build a build error [2] because of how ETH_TAP_USER_MAC_FMT defined [3].
[2]
.../drivers/net/tap/rte_eth_tap.c: At top level:
.../drivers/net/tap/rte_eth_tap.c:45:33: error: called object is not a function
or function pointer
#define ETH_TAP_IFACE_ARG "iface"
^
.../build/include/rte_dev.h:265:25: note: in definition of macro
‘RTE_PMD_REGISTER_PARAM_STRING’
__attribute__((used)) = str
^~~
.../drivers/net/tap/rte_eth_tap.c:1628:2: note: in expansion of macro
‘ETH_TAP_IFACE_ARG’
ETH_TAP_IFACE_ARG "=<string> "
^~~~~~~~~~~~~~~~~
.../drivers/net/tap/rte_eth_tap.c:1630:65: error: expected ‘,’ or ‘;’ before
string constant
ETH_TAP_MAC_ARG "=" ETH_TAP_MAC_FIXED "|" ETH_TAP_USER_MAC_FMT " "
^
.../build/include/rte_dev.h:265:25: note: in definition of macro
‘RTE_PMD_REGISTER_PARAM_STRING’
__attribute__((used)) = str
^~~
[3]
#define ETH_TAP_USER_MAC_FMT ("xx:xx:xx:xx:xx:xx")
parenthesis ...
More information about the dev
mailing list