@@ -24,13 +24,6 @@ VLIB_REGISTER_LOG_CLASS (oct_log, static) = {
2424 .subclass_name = "port" ,
2525};
2626
27- static const u8 default_rss_key [] = {
28- 0xfe , 0xed , 0x0b , 0xad , 0xfe , 0xed , 0x0b , 0xad , 0xad , 0x0b , 0xed , 0xfe ,
29- 0xad , 0x0b , 0xed , 0xfe , 0x13 , 0x57 , 0x9b , 0xef , 0x24 , 0x68 , 0xac , 0x0e ,
30- 0x91 , 0x72 , 0x53 , 0x11 , 0x82 , 0x64 , 0x20 , 0x44 , 0x12 , 0xef , 0x34 , 0xcd ,
31- 0x56 , 0xbc , 0x78 , 0x9a , 0x9a , 0x78 , 0xbc , 0x56 , 0xcd , 0x34 , 0xef , 0x12
32- };
33-
3427static const u64 rxq_cfg =
3528 ROC_NIX_LF_RX_CFG_DIS_APAD | ROC_NIX_LF_RX_CFG_IP6_UDP_OPT |
3629 ROC_NIX_LF_RX_CFG_L2_LEN_ERR | ROC_NIX_LF_RX_CFG_DROP_RE |
@@ -250,7 +243,7 @@ oct_port_init (vlib_main_t *vm, vnet_dev_port_t *port)
250243 return oct_roc_err (dev , rrv , "roc_nix_rss_default_setup() failed" );
251244 }
252245
253- roc_nix_rss_key_set (nix , default_rss_key );
246+ roc_nix_rss_key_set (nix , port -> rss_key . key );
254247
255248 cp -> npc .roc_nix = nix ;
256249 cp -> npc .flow_prealloc_size = OCT_FLOW_PREALLOC_SIZE ;
@@ -815,6 +808,19 @@ oct_op_config_max_rx_len (vlib_main_t *vm, vnet_dev_port_t *port,
815808 return rv ;
816809}
817810
811+ vnet_dev_rv_t
812+ oct_op_config_set_rss_key (vlib_main_t * vm , vnet_dev_port_t * port ,
813+ vnet_dev_rss_key_t * k )
814+ {
815+ vnet_dev_t * dev = port -> dev ;
816+ oct_device_t * cd = vnet_dev_get_data (dev );
817+ vnet_dev_rv_t rv = VNET_DEV_OK ;
818+
819+ roc_nix_rss_key_set (cd -> nix , k -> key );
820+
821+ return rv ;
822+ }
823+
818824vnet_dev_rv_t
819825oct_port_cfg_change_validate (vlib_main_t * vm , vnet_dev_port_t * port ,
820826 vnet_dev_port_cfg_change_req_t * req )
@@ -833,6 +839,7 @@ oct_port_cfg_change_validate (vlib_main_t *vm, vnet_dev_port_t *port,
833839 case VNET_DEV_PORT_CFG_CHANGE_PRIMARY_HW_ADDR :
834840 case VNET_DEV_PORT_CFG_ADD_SECONDARY_HW_ADDR :
835841 case VNET_DEV_PORT_CFG_REMOVE_SECONDARY_HW_ADDR :
842+ case VNET_DEV_PORT_CFG_SET_RSS_KEY :
836843 break ;
837844
838845 case VNET_DEV_PORT_CFG_ADD_RX_FLOW :
@@ -878,6 +885,10 @@ oct_port_cfg_change (vlib_main_t *vm, vnet_dev_port_t *port,
878885 rv = oct_op_config_max_rx_len (vm , port , req -> max_rx_frame_size );
879886 break ;
880887
888+ case VNET_DEV_PORT_CFG_SET_RSS_KEY :
889+ rv = oct_op_config_set_rss_key (vm , port , & req -> rss_key );
890+ break ;
891+
881892 case VNET_DEV_PORT_CFG_ADD_RX_FLOW :
882893 case VNET_DEV_PORT_CFG_DEL_RX_FLOW :
883894 case VNET_DEV_PORT_CFG_GET_RX_FLOW_COUNTER :
0 commit comments