Wht isn't the sphere moving and rebounding properly?

I just moved into learning Unity, I want to make a ping pong typed game, so I have one cubical player that will try to stop the ball from going beyond it. In order to make that, I need a ball moving continuously within the field created using 4 rigid body cubes. In start Sphere is made to move in random direction with a particular speed but once it rebounds to the wall it does not rebound Elastically(not even it rebounds inelastically). So My code must be missing something. Also to note the sphere has been attached with Physics Material for bounciness with minimum friction and maximum bounciness.

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;

public class BallMotion : MonoBehaviour {
 public float speed;
 private Rigidbody Ball;
 Vector3 direction;
 Vector3 oldvel;
 bool reflect;
 int counteradd;

// Use this for initialization
void Start () {

	Ball = GetComponent<Rigidbody> ();
	float rad = 0.0f;
	while (rad==0.0f){
		rad = Random.Range (0, 2 * Mathf.PI);
	direction = new Vector3 (Mathf.Cos (rad), 0.0f, Mathf.Sin (rad));
	direction.Normalize ();
	direction *= speed;


// Update is called once per frame
void Update () {
void FixedUpdate(){
	oldvel = Ball.velocity;
void OnCollisionEnter(Collision c){
	if (counteradd < 1) {
		if (c.gameObject.tag == "Wall") {
			reflect = true;
		ContactPoint cp = c.contacts [0];
		Ball.velocity = Vector3.Reflect (oldvel, cp.normal);

		Ball.velocity += cp.normal ;

Here is Picture of what my game field looks like.

what is this bool reflect? please post all relevant code. any ways you dont need to write any code to make the ball bounce off the wall. unity’s physics engine does that for you. and walls should not be rigidbodies, a rigidbody is for a moving gameobject. remove the rigidbody from all the walls and add box colliders (NOT triggered).