aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/cisco
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2014-11-23 15:27:41 -0500
committerDavid S. Miller <davem@davemloft.net>2014-11-23 21:01:42 -0500
commitc33d23c21501f8e3e045e73b55a49167e1f3a721 (patch)
tree0563a34aa82a66b761c1bb87c93419f24308401f /drivers/net/ethernet/cisco
parente5d08d718a7cd72c6aa79b5f0c309d9f0d7e4a95 (diff)
enic: use netdev_rss_key_fill() helper
Use of well known RSS key might increase attack surface. Switch to a random one, using generic helper so that all ports share a common key. Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Christian Benvenuti <benve@cisco.com> Cc: Govindarajulu Varadarajan <_govind@gmx.com> Cc: Sujith Sankar <ssujith@cisco.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/cisco')
-rw-r--r--drivers/net/ethernet/cisco/enic/enic_main.c24
-rw-r--r--drivers/net/ethernet/cisco/enic/vnic_rss.h9
2 files changed, 19 insertions, 14 deletions
diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index 46647407d585..86ee350e57f0 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -1890,23 +1890,23 @@ static int enic_dev_hang_reset(struct enic *enic)
1890 1890
1891static int enic_set_rsskey(struct enic *enic) 1891static int enic_set_rsskey(struct enic *enic)
1892{ 1892{
1893 union vnic_rss_key *rss_key_buf_va;
1893 dma_addr_t rss_key_buf_pa; 1894 dma_addr_t rss_key_buf_pa;
1894 union vnic_rss_key *rss_key_buf_va = NULL; 1895 u8 rss_key[ENIC_RSS_LEN];
1895 union vnic_rss_key rss_key = { 1896 int i, kidx, bidx, err;
1896 .key[0].b = {85, 67, 83, 97, 119, 101, 115, 111, 109, 101},
1897 .key[1].b = {80, 65, 76, 79, 117, 110, 105, 113, 117, 101},
1898 .key[2].b = {76, 73, 78, 85, 88, 114, 111, 99, 107, 115},
1899 .key[3].b = {69, 78, 73, 67, 105, 115, 99, 111, 111, 108},
1900 };
1901 int err;
1902 1897
1903 rss_key_buf_va = pci_alloc_consistent(enic->pdev, 1898 rss_key_buf_va = pci_zalloc_consistent(enic->pdev,
1904 sizeof(union vnic_rss_key), &rss_key_buf_pa); 1899 sizeof(union vnic_rss_key),
1900 &rss_key_buf_pa);
1905 if (!rss_key_buf_va) 1901 if (!rss_key_buf_va)
1906 return -ENOMEM; 1902 return -ENOMEM;
1907 1903
1908 memcpy(rss_key_buf_va, &rss_key, sizeof(union vnic_rss_key)); 1904 netdev_rss_key_fill(rss_key, ENIC_RSS_LEN);
1909 1905 for (i = 0; i < ENIC_RSS_LEN; i++) {
1906 kidx = i / ENIC_RSS_BYTES_PER_KEY;
1907 bidx = i % ENIC_RSS_BYTES_PER_KEY;
1908 rss_key_buf_va->key[kidx].b[bidx] = rss_key[i];
1909 }
1910 spin_lock_bh(&enic->devcmd_lock); 1910 spin_lock_bh(&enic->devcmd_lock);
1911 err = enic_set_rss_key(enic, 1911 err = enic_set_rss_key(enic,
1912 rss_key_buf_pa, 1912 rss_key_buf_pa,
diff --git a/drivers/net/ethernet/cisco/enic/vnic_rss.h b/drivers/net/ethernet/cisco/enic/vnic_rss.h
index fa421baf45b8..881fa18542b3 100644
--- a/drivers/net/ethernet/cisco/enic/vnic_rss.h
+++ b/drivers/net/ethernet/cisco/enic/vnic_rss.h
@@ -20,11 +20,16 @@
20#define _VNIC_RSS_H_ 20#define _VNIC_RSS_H_
21 21
22/* RSS key array */ 22/* RSS key array */
23
24#define ENIC_RSS_BYTES_PER_KEY 10
25#define ENIC_RSS_KEYS 4
26#define ENIC_RSS_LEN (ENIC_RSS_BYTES_PER_KEY * ENIC_RSS_KEYS)
27
23union vnic_rss_key { 28union vnic_rss_key {
24 struct { 29 struct {
25 u8 b[10]; 30 u8 b[ENIC_RSS_BYTES_PER_KEY];
26 u8 b_pad[6]; 31 u8 b_pad[6];
27 } key[4]; 32 } key[ENIC_RSS_KEYS];
28 u64 raw[8]; 33 u64 raw[8];
29}; 34};
30 35