##### SUMMARY
<!--- Explain the problem briefly below, add suggestions to wording or structure -->
The [main configuration documentation](https://docs.ansible.com/ansible/latest/reference_appendices/config.html#ansible-pipelining) says that pipelining is enabled in the `ssh_connection` or `connection` section.

The [ssh connection plugin](https://docs.ansible.com/ansible/latest/plugins/connection/ssh.html#parameter-pipelining) configuration says pipelining should  be enabled in the `defaults` section.

#31125 (and the associated commit) seems to imply that the `ssh_connection` section is legacy, but the comments (https://github.com/ansible/ansible/issues/31125#issuecomment-334071699) seem to say otherwise.

The actual sections (as demonstrated in the configuration section below) that works are `ssh_connection` and `connection`.


##### ISSUE TYPE
- Documentation Report

##### COMPONENT NAME
ssh

##### ANSIBLE VERSION

```paste below
ansible 2.9.9
  config file = /c/xxx/ansible/ansible.cfg
  configured module search path = ['/c/Users/bendem/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /c/Users/bendem/.local/share/virtualenvs/ansible-oaopcvR0/lib/python3.8/site-packages/ansible
  executable location = /c/Users/bendem/.local/share/virtualenvs/ansible-oaopcvR0/bin/ansible
  python version = 3.8.3 (default, May 18 2020, 08:39:23) [GCC 9.3.0]
```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
With `[defaults]\npipelining = true`

```
ALLOW_WORLD_READABLE_TMPFILES(/c/xxx/ansible/ansible.cfg) = False
ANSIBLE_SSH_EXECUTABLE(/c/xxx/ansible/ansible.cfg) = /usr/bin/ssh
ANSIBLE_SSH_RETRIES(/c/xxx/ansible/ansible.cfg) = 1
DEFAULT_HOST_LIST(/c/xxx/ansible/ansible.cfg) = ['/c/xxx/ansible/inventory/inventory.ini']
DEFAULT_ROLES_PATH(/c/xxx/ansible/ansible.cfg) = ['/c/xxx/ansible/vendors/roles', '/c/xxx/ansible/roles']
DEFAULT_VAULT_ID_MATCH(/c/xxx/ansible/ansible.cfg) = true
DIFF_ALWAYS(/c/xxx/ansible/ansible.cfg) = True
INTERPRETER_PYTHON(/c/xxx/ansible/ansible.cfg) = /usr/bin/python3
INVENTORY_UNPARSED_IS_FAILED(/c/xxx/ansible/ansible.cfg) = True
```

With `[ssh_connection]\npipelining = true`

```paste below
ALLOW_WORLD_READABLE_TMPFILES(/c/xxx/ansible/ansible.cfg) = False
ANSIBLE_PIPELINING(/c/xxx/ansible/ansible.cfg) = True
ANSIBLE_SSH_EXECUTABLE(/c/xxx/ansible/ansible.cfg) = /usr/bin/ssh
ANSIBLE_SSH_RETRIES(/c/xxx/ansible/ansible.cfg) = 1
DEFAULT_HOST_LIST(/c/xxx/ansible/ansible.cfg) = ['/c/xxx/ansible/inventory/inventory.ini']
DEFAULT_ROLES_PATH(/c/xxx/ansible/ansible.cfg) = ['/c/xxx/ansible/vendors/roles', '/c/xxx/ansible/roles']
DEFAULT_VAULT_ID_MATCH(/c/xxx/ansible/ansible.cfg) = true
DIFF_ALWAYS(/c/xxx/ansible/ansible.cfg) = True
INTERPRETER_PYTHON(/c/xxx/ansible/ansible.cfg) = /usr/bin/python3
INVENTORY_UNPARSED_IS_FAILED(/c/xxx/ansible/ansible.cfg) = True
```

With `[connection]\npipelining = true`

```paste below
ALLOW_WORLD_READABLE_TMPFILES(/c/xxx/ansible/ansible.cfg) = False
ANSIBLE_PIPELINING(/c/xxx/ansible/ansible.cfg) = True
ANSIBLE_SSH_EXECUTABLE(/c/xxx/ansible/ansible.cfg) = /usr/bin/ssh
ANSIBLE_SSH_RETRIES(/c/xxx/ansible/ansible.cfg) = 1
DEFAULT_HOST_LIST(/c/xxx/ansible/ansible.cfg) = ['/c/xxx/ansible/inventory/inventory.ini']
DEFAULT_ROLES_PATH(/c/xxx/ansible/ansible.cfg) = ['/c/xxx/ansible/vendors/roles', '/c/xxx/ansible/roles']
DEFAULT_VAULT_ID_MATCH(/c/xxx/ansible/ansible.cfg) = true
DIFF_ALWAYS(/c/xxx/ansible/ansible.cfg) = True
INTERPRETER_PYTHON(/c/xxx/ansible/ansible.cfg) = /usr/bin/python3
INVENTORY_UNPARSED_IS_FAILED(/c/xxx/ansible/ansible.cfg) = True
```

##### OS / ENVIRONMENT
Windows 10, msys2 python3, not that it matters.

##### ADDITIONAL INFORMATION
<!--- Describe how this improves the documentation, e.g. before/after situation or screenshots -->

<!--- HINT: You can paste gist.github.com links for larger files -->

selector = selectors.DefaultSelector()
        selector.register(p.stdout, selectors.EVENT_READ)
        selector.register(p.stderr, selectors.EVENT_READ)
        
        
        if states[state] == 'ready_to_send' and in_data:
            self._send_initial_data(stdin, in_data, p)
            state += 1
        try:
            while True:
                poll = p.poll()
                events = selector.select(timeout)
                
                if not events:
                    
                    if state <= states.index('awaiting_escalation'):
                        
                        
                        if poll is not None:
                            break
                        self._terminate_process(p)
                        raise AnsibleError('Timeout (%ds) waiting for privilege escalation prompt: %s' % (timeout, to_native(b_stdout)))
                
                
                for key, event in events:
                    if key.fileobj == p.stdout:
                        b_chunk = p.stdout.read()