diff options
-rw-r--r-- | drivers/net/stmmac/stmmac_main.c | 65 |
1 files changed, 42 insertions, 23 deletions
diff --git a/drivers/net/stmmac/stmmac_main.c b/drivers/net/stmmac/stmmac_main.c index 1002b5517728..40a6ae582800 100644 --- a/drivers/net/stmmac/stmmac_main.c +++ b/drivers/net/stmmac/stmmac_main.c | |||
@@ -1917,33 +1917,52 @@ static int __init stmmac_cmdline_opt(char *str) | |||
1917 | if (!str || !*str) | 1917 | if (!str || !*str) |
1918 | return -EINVAL; | 1918 | return -EINVAL; |
1919 | while ((opt = strsep(&str, ",")) != NULL) { | 1919 | while ((opt = strsep(&str, ",")) != NULL) { |
1920 | if (!strncmp(opt, "debug:", 6)) | 1920 | if (!strncmp(opt, "debug:", 6)) { |
1921 | strict_strtoul(opt + 6, 0, (unsigned long *)&debug); | 1921 | if (strict_strtoul(opt + 6, 0, (unsigned long *)&debug)) |
1922 | else if (!strncmp(opt, "phyaddr:", 8)) | 1922 | goto err; |
1923 | strict_strtoul(opt + 8, 0, (unsigned long *)&phyaddr); | 1923 | } else if (!strncmp(opt, "phyaddr:", 8)) { |
1924 | else if (!strncmp(opt, "dma_txsize:", 11)) | 1924 | if (strict_strtoul(opt + 8, 0, |
1925 | strict_strtoul(opt + 11, 0, | 1925 | (unsigned long *)&phyaddr)) |
1926 | (unsigned long *)&dma_txsize); | 1926 | goto err; |
1927 | else if (!strncmp(opt, "dma_rxsize:", 11)) | 1927 | } else if (!strncmp(opt, "dma_txsize:", 11)) { |
1928 | strict_strtoul(opt + 11, 0, | 1928 | if (strict_strtoul(opt + 11, 0, |
1929 | (unsigned long *)&dma_rxsize); | 1929 | (unsigned long *)&dma_txsize)) |
1930 | else if (!strncmp(opt, "buf_sz:", 7)) | 1930 | goto err; |
1931 | strict_strtoul(opt + 7, 0, (unsigned long *)&buf_sz); | 1931 | } else if (!strncmp(opt, "dma_rxsize:", 11)) { |
1932 | else if (!strncmp(opt, "tc:", 3)) | 1932 | if (strict_strtoul(opt + 11, 0, |
1933 | strict_strtoul(opt + 3, 0, (unsigned long *)&tc); | 1933 | (unsigned long *)&dma_rxsize)) |
1934 | else if (!strncmp(opt, "watchdog:", 9)) | 1934 | goto err; |
1935 | strict_strtoul(opt + 9, 0, (unsigned long *)&watchdog); | 1935 | } else if (!strncmp(opt, "buf_sz:", 7)) { |
1936 | else if (!strncmp(opt, "flow_ctrl:", 10)) | 1936 | if (strict_strtoul(opt + 7, 0, |
1937 | strict_strtoul(opt + 10, 0, | 1937 | (unsigned long *)&buf_sz)) |
1938 | (unsigned long *)&flow_ctrl); | 1938 | goto err; |
1939 | else if (!strncmp(opt, "pause:", 6)) | 1939 | } else if (!strncmp(opt, "tc:", 3)) { |
1940 | strict_strtoul(opt + 6, 0, (unsigned long *)&pause); | 1940 | if (strict_strtoul(opt + 3, 0, (unsigned long *)&tc)) |
1941 | goto err; | ||
1942 | } else if (!strncmp(opt, "watchdog:", 9)) { | ||
1943 | if (strict_strtoul(opt + 9, 0, | ||
1944 | (unsigned long *)&watchdog)) | ||
1945 | goto err; | ||
1946 | } else if (!strncmp(opt, "flow_ctrl:", 10)) { | ||
1947 | if (strict_strtoul(opt + 10, 0, | ||
1948 | (unsigned long *)&flow_ctrl)) | ||
1949 | goto err; | ||
1950 | } else if (!strncmp(opt, "pause:", 6)) { | ||
1951 | if (strict_strtoul(opt + 6, 0, (unsigned long *)&pause)) | ||
1952 | goto err; | ||
1941 | #ifdef CONFIG_STMMAC_TIMER | 1953 | #ifdef CONFIG_STMMAC_TIMER |
1942 | else if (!strncmp(opt, "tmrate:", 7)) | 1954 | } else if (!strncmp(opt, "tmrate:", 7)) { |
1943 | strict_strtoul(opt + 7, 0, (unsigned long *)&tmrate); | 1955 | if (strict_strtoul(opt + 7, 0, |
1956 | (unsigned long *)&tmrate)) | ||
1957 | goto err; | ||
1944 | #endif | 1958 | #endif |
1959 | } | ||
1945 | } | 1960 | } |
1946 | return 0; | 1961 | return 0; |
1962 | |||
1963 | err: | ||
1964 | pr_err("%s: ERROR broken module parameter conversion", __func__); | ||
1965 | return -EINVAL; | ||
1947 | } | 1966 | } |
1948 | 1967 | ||
1949 | __setup("stmmaceth=", stmmac_cmdline_opt); | 1968 | __setup("stmmaceth=", stmmac_cmdline_opt); |